visual c常量的多个定义
发布时间:2020-12-16 06:51:38 所属栏目:百科 来源:网络整理
导读:我有一个标题和两个源文件. main.cpp中: #include iostream#include "constant.h"int main() { std::cout test.at("Hello") std::endl;} constant.h: #ifndef CONSTANT_H#define CONSTANT_H#include string#include unordered_mapextern std::unordered_ma
我有一个标题和两个源文件.
main.cpp中: #include <iostream> #include "constant.h" int main() { std::cout << test.at("Hello") << std::endl; } constant.h: #ifndef CONSTANT_H #define CONSTANT_H #include <string> #include <unordered_map> extern std::unordered_map<std::string,int> const test; #endif constant.cpp: #include "constant.h" std::unordered_map<std::string,int> const test = { {"Hello",1},{"World",2} }; 当我使用Visual C(Visual Studio 2015 Update 1)编译时,我得到了许多多个定义链接器错误. 编辑:它仅在启用/ Za(禁用语言扩展)开关时发生 所有这些似乎都源于< limits>头. 以下是前几个错误(抱歉德语编译器输出): 1>constant.obj : error LNK2005: "public: static bool const std::numeric_limits<unsigned char>::is_signed" (?is_signed@?$numeric_limits@E@std@@2_NB) ist bereits in main.obj definiert. 1>constant.obj : error LNK2005: "public: static int const std::numeric_limits<unsigned char>::digits" (?digits@?$numeric_limits@E@std@@2HB) ist bereits in main.obj definiert. 1>constant.obj : error LNK2005: "public: static int const std::numeric_limits<unsigned char>::digits10" (?digits10@?$numeric_limits@E@std@@2HB) ist bereits in main.obj definiert. 1>constant.obj : error LNK2005: "public: static bool const std::numeric_limits<short>::is_signed" (?is_signed@?$numeric_limits@F@std@@2_NB) ist bereits in main.obj definiert. 1>constant.obj : error LNK2005: "public: static int const std::numeric_limits<short>::digits" (?digits@?$numeric_limits@F@std@@2HB) ist bereits in main.obj definiert. 1>constant.obj : error LNK2005: "public: static int const std::numeric_limits<short>::digits10" (?digits10@?$numeric_limits@F@std@@2HB) ist bereits in main.obj definiert. 但是,当我使用Clang / C2或使用g或clang在linux上编译相同的代码时,我没有收到任何链接器错误. 这个程序是否违反ODR并且拒绝它是否是Visual C正确的? 解决方法
这听起来像是一个完全破坏的工具链,特别是因为你甚至没有直接包括< limits>你自己.显然,Visual Studio 2015的“非扩展”模式没有像“向C添加大量内容”模式那样进行测试.
FWIW,您的代码很好. 提出MS Connect上的错误. 幸运的是,您已经有了解决方法. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- a和&a在C中作为函数参数传递的数组不同
- 基于Cassandra搭建简单Blog程序后台
- 是否已有预先存在的代码用于支持Dojo AMD,NodeJS需要和浏览
- 正则表达式之最短匹配
- Cocos2D中Action的进阶使用技巧(二)
- ruby – Sinatra Locals vs. Instance Variables
- no grammar constraints (DTD or XML schema) 解决方法
- 基于MTD的NANDFLASH设备驱动底层实现原理分析 .
- Oracle Advanced Support系统SQL注入漏洞挖掘经验分享
- postgreSQL中含有PM/AM时间格式转换to_timestamp
推荐文章
站长推荐
热点阅读