如何使用在源文件内的头文件中声明的全局变量
How to use a global variable declared in a header file inside a source file?
我正在为 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 文件)
相关文章:
- .cpp和.h文件中的模板专用化声明
- 在 .h 文件中的类中声明静态变量和在.cpp文件中声明"global"变量有什么区别
- 用"=default"声明的函数应该只在头文件中执行
- 调用在 HXX 文件中声明的静态数据成员
- 如何在 c++ 的不同文件中声明类?
- 如何在头文件中声明类模板(由于循环依赖关系)
- 声明要在 qml 和 cpp 文件中使用的全局字符串
- 在.cpp文件之间传递结构声明,而不使用全局头文件
- 为什么要将函数声明和定义放在单独的文件中
- 枚举前向声明与头文件
- 在命名空间中声明变量,在 main 中定义它,使其对所有其他文件可见
- 在带有类型保护的模板文件中使用前向声明
- 在指向现有内存地址的 hpp 文件中声明成员函数的最佳方法
- 在多个头文件中从接口声明被覆盖的函数时,如何避免重复代码?
- 应该在类中的文件声明为静态
- 是否应从头文件声明中排除辅助函数?(C++)
- 哪个C++头文件声明 strlen
- 如何为头文件声明“#include”以避免“error lnk2005”
- 打开文件和关闭文件声明定位:最佳做法,优点,缺点
- 说双向文件声明不隐式设置标志是否正确