如何在多个.c文件中定义全局变量

时间:2014-09-02 01:43:11

标签: c

假设有一个头文件: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
    
  4. 有一个答案在a.h中定义g,如下所示:     extern int g; 但是,根据c的规范J.5.11;这是未定义的行为。

    还有其他解决方案吗?

1 个答案:

答案 0 :(得分:4)

正如你所说,变量必须在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