在头文件中设置常量char *?

时间:2011-01-20 21:39:29

标签: c++ c

如果我想在头文件中设置一个私有的常量字符数组,你怎么能这样做?编译器似乎不喜欢它..这是我尝试过的。

static const char *foo = "SomeCharArray";

4 个答案:

答案 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文件之间共享私有数据,则可能没有以最合适的方式在文件中拆分函数和数据。