我正在为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
感谢。
答案 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文件)