extern C中的字符串数组

时间:2011-11-21 20:06:02

标签: c gcc

char *的Names数组位于file1.cpp

char* Names[] = {

    "name1",
    "name2",
    ...
    "nameN"
};

如何在file2.cpp中将其声明为“extern”以获取值?

3 个答案:

答案 0 :(得分:2)

extern char *Names[];

这可能应该放在file1.h。

答案 1 :(得分:1)

您在标题中声明为extern

// file1.h
extern char* Names[];

// file1.cpp
#include "file1.h"
char* Names[] = { ... };

// file2.cpp
#include "file1.h"
// You can use Names here.

没有什么可以阻止你在.cpp文件中将其声明为extern,但这并不常见,会让读取代码的人感到困惑。这也意味着file2.cpp必须包含file1。 cpp 或重新声明数组,这很快变得无法管理。

答案 2 :(得分:0)

您可以将file2中的char指针数组声明为:

extern char*Names[];

C中的演示:

$ cat file1.c
char* Names[] = {"name1","name2","nameN" };

$ cat file2.c
#include <stdio.h>

extern char*Names[];

int  main() {
    printf("%s\n",Names[0]);
}
$ gcc file1.c file2.c && ./a.out
name1