gpt4 book ai didi

c - 如何定义跨多个 .c 文件可见的全局变量

转载 作者:行者123 更新时间:2023-11-30 16:58:43 24 4
gpt4 key购买 nike

假设有一个头文件:a.h和源文件:a1.c a2.c ... an.c; n>=1,表示可能只有一个源文件,也可能有多个源文件。

我的问题是如何在a.h中定义一个全局变量g; a1.c ... an.c 应该可以看到它。

有限制:

  1. 在 a1.c a2.c ... an.c 中; "a.h"只能包含在第一行,即#include "a.h"行之前源文件中不能有任何代码

  2. g 必须在 a.h 中定义。

  3. 只能通过以下方式编译代码:

    gcc -c a1.c  -o  a1.o
    ...
    gcc -c an.c -o an.o
    gcc -o a.exe a1.o ... an.o

有一个答案在 a.h 中定义 g 如下: 外部整数g;然而,根据c的规范J.5.11;这是未定义的行为。

还有其他解决办法吗?

最佳答案

正如您所说,变量必须在c文件中定义,并且声明应位于头文件中。
您必须在任何 c 文件中定义全局变量并在头文件中声明“extern”。

示例)

1) define global variable in a1.c
int g;

2) declare global variable in a.h
extern int g;

3) include header file in other c files
#include "a.h"
// to do something

关于c - 如何定义跨多个 .c 文件可见的全局变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38597924/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com