我有多个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。
答案 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
的任何位置的每个源文件中执行文本替换。