Ana*_*lyn 5 c resource-files header-files
我在下面的代码中遇到了一些问题,特别是在header.c中我无法访问header.h中的extern int x变量...为什么?.h中的extern变量不是全局变量吗?我如何在其他文件上使用它?
=== header.h ===
#ifndef HDR_H
#define HDR_H
extern int x;
void function();
#endif
Run Code Online (Sandbox Code Playgroud)
=== header.c ===
#include <stdio.h>
#include "header.h"
void function()
{
printf("%d", x); //****undefined reference to x, why?****
}
Run Code Online (Sandbox Code Playgroud)
=== sample.c文件===
int main()
{
int x = 1;
function();
printf("\n%d", x);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
声明
extern int x;
Run Code Online (Sandbox Code Playgroud)
告诉编译器在某些源文件中会有一个名为的全局变量x.但是,在main函数中声明一个局部变量x.将该声明main移到外面以使其成为全局.
extern声明一个变量,但不定义它。x它基本上告诉编译器在其他地方有一个定义。要修复,请将以下内容添加到header.c(或其他一些.c文件,但只有一个.c文件):
int x;
Run Code Online (Sandbox Code Playgroud)
注意,在main()局部变量中x会隐藏全局变量x。