如果我想在头文件中设置一个私有的常量字符数组,你怎么能这样做?编译器似乎不喜欢它..这是我尝试过的。
static const char *foo = "SomeCharArray";
答案 0 :(得分:3)
以下列方式使用extern
关键字。
// myfile.h
extern const char* foo;
// myfile.cpp
const char* foo = "SomeCharArray";
答案 1 :(得分:2)
以下代码编译良好:
consty.h:
static const char *foo = "SomeCharArray";
consty.c:
#include <stdio.h>
#include "consty.h"
int main()
{
printf ("Hi %s\n", foo);
return 0;
}
请注意,包含consty.h
的任何文件都将获得自己的foo副本。其他人已经描述了使用extern
分享全局变量的正确方法。
答案 2 :(得分:0)
file.h:
extern const char* foo;
#define FOO_DATA "SomeCharDATA"
file.c:
const char *foo = FOO_DATA;
答案 3 :(得分:0)
鉴于此:
static const char *foo = "SomeCharArray";
是一个完全有效的C(即使在头文件中)我认为你应该问自己为什么要在标题中使用它!
如果需要将变量作用域限制为.c文件,只需将声明放在该文件中即可。如果您发现自己需要在两个.c文件之间共享私有数据,则可能没有以最合适的方式在文件中拆分函数和数据。