题目
C/C++多文件工程中,如果需要多个文件共享一个全局变量[1],则下列哪种是正确的:A. 将该变量定义到.c文件中,其它文件中用extern声明B. 将该变量定义到.h 文件中,其它文件中用 extern 声明C. 将该变量定义到.h 文件中,其它文件中包含该.h 文件D. 将该变量定义到.c 文件中,其它文件中直接使用
C/C++多文件工程中,如果需要多个文件共享一个全局变量[1],则下列哪种是正确的:
- A. 将该变量定义到.c文件中,其它文件中用extern声明
- B. 将该变量定义到.h 文件中,其它文件中用 extern 声明
- C. 将该变量定义到.h 文件中,其它文件中包含该.h 文件
- D. 将该变量定义到.c 文件中,其它文件中直接使用
题目解答
答案
A
解析
本题考查C/C++多文件工程中全局变量的共享机制。关键在于理解变量的定义与声明的区别,以及extern关键字的作用。正确做法是仅在一个.c文件中定义变量,并在其他需要使用的文件中用extern声明,以确保所有文件引用同一块内存。
选项分析
选项A
正确。
- 将变量定义在某个.c文件中,其他文件通过
extern
声明。 extern
仅声明变量的存在,不分配存储空间,所有文件共享同一块内存。
选项B
错误。
- 若将变量定义在.h文件中并用
extern
声明,每个包含该头文件的.c文件都会生成一份定义,导致重复定义错误。
选项C
错误。
- 直接在.h文件中定义变量,所有包含该头文件的.c文件都会独立定义该变量,产生多个定义,编译失败。
选项D
错误。
- 其他文件未声明
extern
,编译器会认为变量未定义(隐式内部链接),导致链接错误。