Я пытаюсь понять, как написан код ядра, следуя основам C. я столкнулся, что иногда они делают это, (fs.h)Какова цель объявления и определения структуры здесь?
struct backing_dev_info;
struct export_operations;
struct hd_geometry;
struct iovec;
Я сделал простую программу C
#include <stdio.h>
struct bdinfo;
struct bdinfo{
int a;
int b;
};
int main()
{
struct bdinfo var;
var.a= 3 ;
var.b = 5 ;
printf("var.a = %d var.b = %d\n", var.a, var.b);
return 0;
}
Он работает. Мне нужно понять, почему struct bdinfo написан таким образом или в файле fs.h? Какую цель он выполняет в программе, чтобы написать имя структуры в каком-либо месте и объявить ее другим местом?
Так что, если я объявляю объект в каком-либо файле .h, и программист читает об этом, он может написать другое определение. Так как это полезно? Как увеличивается читаемость? –
@Mlo Bootloader Определения структуры могут быть очень большими. Вы можете поместить определение структуры в отдельный заголовок. Но другим заголовкам иногда нужно знать, что такое объявление структуры существует, чтобы объявить, например, функцию. Таким образом, им нужно найти имя тега структуры, чтобы объявить функцию. –
Итак, если структура необходима локально, декларация не требуется. Если структура используется по всему проекту, мы должны объявить ее в определенном файле .h и включить ее. Этот файл .h должен содержать этот файл .h, который содержит определение этой структуры. Итак, в ядре объявляются структурные переменные, определенные таким образом? –