如何使用源文件中头文件中声明的全局变量?

时间:2012-06-25 18:45:18

标签: c++

我正在为HP-UX和Linux编写跨平台C ++应用程序。我想知道如何在文件3中使用文件1中声明的const char *变量,而不会弹出以下错误:

/usr/ccs/bin/ld: Duplicate symbol "OPERATING_SYSTEM" in files smac_dictionary.o and smac_dsl_parser.o
/usr/ccs/bin/ld: Found 1 duplicate symbol(s)
gmake: *** [smac_dsl_parser] Error 1

感谢。

1 个答案:

答案 0 :(得分:3)

<强> [EDIT1]

看到#define的引用。他的意思是在你的头文件中执行此操作(myDeclare.h):

#ifndef __YOURNAMEHERE__
#define __YOURNAMEHERE__

// All of your declarations here
extern const char * myVar[6];

#endif

在myDeclare.c或cpp

const char * myVar[6] = {'a', 'b', 'c', 'd', 'e', 'f'};

现在你应该可以在任何地方包含myDeclare.h,编译只会尝试引入你的变量或代码一次。

<强> [原稿] 我总是能够通过在头文件中使用关键字extern来实现这一点,然后在我的c源文件中真正“定义”变量。

即使您必须从多个源文件引用相同的变量(即header1.h包含在source1.c,source2.c和source3.c中),这也应该有用。

这也是你在C ++中的表现(尽管我的例子引用.c文件而不是cpp文件)