在标题中定义char

时间:2017-06-30 18:27:35

标签: c variables header

我有多个C文件1.c 2.c和3.c及其对应的标题1.h 2.h 3.h.这些文件使用相同的静态char * 变量,因此我想在一个头文件中定义此变量。有没有解决方案?

喜欢:#define nameVariable valueVariable

注意:

  • c文件中没有一个包含另一个标题(即1.c不包括2.h和3.h等)。

  • 所有3个文件都包含4.h文件。

  • 所有3个文件都具有相同的Makefile。

2 个答案:

答案 0 :(得分:3)

将其放入4.h,所有3个包括:

dplyr

这将声明变量(就像在头文件中声明函数一样),因此编译器在看到其他.c文件中引用的df %>% select(variable2:variable5) %>% slice(3) 时不会抱怨(知道它已被宣布)。 然后把它放在3个文件的一个(并且只有1个)中(1.c 2.c或3.c):

extern char* myGlobalVar;

这个定义变量,它为它赋予一个实际值(就像在相应的.c文件中定义一个函数一样)。可以有多个标识符声明(例如myGlobalVar),但只有一个定义。所以你可以在所有.h文件中写myGlobalVar,但你只能在其中一个.c文件中写char* myGlobalVar = "blah";

现在您可以访问3个c文件中的任何一个extern char* myGlobalVar;,只要它们都包含4.h。

答案 1 :(得分:2)

如果有问题的变量是一个永远不会改变的常量字符串,那么你就可以使用#define

在4.h:

#define MY_STATIC_STRING "my_string"

这将在您使用MY_STATIC_STRING的任何位置的每个源文件中执行文本替换。