C语言 外部全局变量示例 - 错误



我想了解我在以下示例中犯了哪个错误。有三个文件: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("%dn", 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的标头,或者直接在 libreria_mia.c 中声明x

此外,名为file.h的标头通常声明在 file.c 中定义的内容(不一定是 file.c 中定义的所有内容,只是那些打算在 file.c外部使用的内容(。但是你x在 libreria_mia.h 中声明,但在 main.c 中定义。通常,人们要么在 libreria_mia.c 中定义x,要么在 main.h 中声明它,通常前者作为 main.c 更常见的是程序中所有其他事物的用户,而不是提供者。

相关内容

  • 没有找到相关文章

最新更新