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

How to use a global variable declared in a header file inside a source file?

本文关键字:文件 声明 全局变量 源文件 何使用      更新时间:2023-10-16

我正在为 HP-UX 和 Linux 编写一个跨平台C++应用程序。 我想知道如何使用文件 1 在文件 3 中的文件 3 中声明的 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]

看到对 #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 文件)