命名空间变量的多重定义,C编译
发布时间:2020-12-16 05:51:49 所属栏目:百科 来源:网络整理
导读:我正在写一个简单的Makefile,看起来像这样 CC=gccCXX=g++DEBUG=-gCOMPILER=${CXX}a.out: main.cpp Mail.o trie.o Spambin.o ${COMPILER} ${DEBUG} main.cpp Mail.o trie.o Re2/obj/so/libre2.sotrie.o: trie.cpp ${COMPILER} ${DEBUG} -c trie.cppMail.o: Ma
我正在写一个简单的Makefile,看起来像这样
CC=gcc CXX=g++ DEBUG=-g COMPILER=${CXX} a.out: main.cpp Mail.o trie.o Spambin.o ${COMPILER} ${DEBUG} main.cpp Mail.o trie.o Re2/obj/so/libre2.so trie.o: trie.cpp ${COMPILER} ${DEBUG} -c trie.cpp Mail.o: Mail.cpp ${COMPILER} ${DEBUG} -c Mail.cpp Spambin.o: Spambin.cpp ${COMPILER} ${DEBUG} -c Spambin.cpp clean: rm -f *.o 我有一个文件名config.h,这是Mail.cpp和Spambin.cpp所必需的,所以我有 #ifndef __DEFINE_H__ #define __DEFINE_H__ #include<iostream> namespace config{ int On = 1; int Off = 0; double S = 1.0; } #endif But when I try to compile the code it gives me Mail.o:(.data+0x8): multiple definition of `config::On' /tmp/ccgaS6Bh.o:(.data+0x8): first defined here Mail.o:(.data+0x10): multiple definition of `config::Off' /tmp/ccgaS6Bh.o:(.data+0x10): first defined here 有人可以帮我调试吗 解决方法
您不能分配到头文件中的命名空间变量.这样做定义了变量,而不是仅仅声明它们.将它放在一个单独的源文件中,并将其添加到Makefile中,它应该工作.
编辑另外,你必须在头文件extern中进行声明. 所以在头文件中,命名空间应该如下所示: namespace config{ extern int On; extern int Off; extern double S; } 并在源文件中: namespace config{ int On = 1; int Off = 0; double S = 1.0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 正则表达式 – 对列表元素的子集使用lapply并返回与R中原始
- ruby-on-rails – Rails中的模型是隐含的,这是一个烦人的事
- c – Visual Studio 2013中的Windows XP和Windows Server 2
- 关于ArcGIS Server API for Flex 模糊查询的方法
- Notepad++安装xml插件
- 支持ajax 跨域调用的WCF搭建
- Oracle中字符串连接的实现方法
- Hybrid优化之两个WebView中的H5通信
- c# – 调用.NET 2 DLL的.NET 4应用程序是否有任何性能影响?
- ruby-on-rails – 设置用于Rails的环境变量(ENV)