我想了解以下示例中的哪个错误。有三个文件:main.c,libreria_mia.c和libreria_mia.h。
// main.c
#include <stdio.h>
#include "libreria_mia.h"
int x = 5;
int main()
{
int y = quadrato();
printf("%d\n", y);
return 0;
}
// libreria_mia.h
extern int x;
int quadrato(void);
// libreria_mia.c
int quadrato(void)
{
x = x * x;
}
错误:
libreria_mia.c:5:2: error: ‘x’ undeclared (first use in this function)
感谢您的时间。
最佳答案
当您编译libreria_mia.c时,编译器不会自动知道libreria_mia.h或其中的声明。要在编译libreria_mia.c时提供x
的声明,libreria_mia.c必须包括一个声明x
的 header 或直接在libreria_mia.c中声明x
的头。
此外,习惯上,名为file.h的 header 声明在file.c中定义的内容(不一定在file.c中定义的所有内容,而只是打算在其外部使用的那些内容)。但是,您在libreria_mia.h中声明了x
,但在main.c中对其进行了定义。通常,可以在libreria_mia.c中定义x
或在main.h中声明它,通常将前者作为main.c来使用程序中所有其他内容,而不是提供程序。
关于c - extern全局变量示例-错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62386636/