草庐IT

c++ - 添加 Boost 使调试构建依赖于 "non-D"MSVC 运行时 DLL

我有一个烦人的问题,我可能能够以某种方式规避它,但另一方面,我更愿意了解它并了解到底发生了什么,因为看起来这些东西真的会留下来。故事是这样的:我有一个简单的OpenGL应用程序,它运行良好:在编译、链接或运行它时从来都不是主要问题。现在我决定尝试将一些更密集的计算移到工作线程中,以便可能使GUI响应更快——当然是使用Boost.Thread。简而言之,如果我在.cpp文件的开头添加以下片段:#includevoiddummyThreadFun(){while(1);}boost::threadp(dummyThreadFun);,然后我在尝试启动调试版本时开始收到“此应用程序无法启动,

c++ - 使用嵌套类的奇怪 enable_if 行为(MSVC 编译器错误或功能?)

在调试我的代码一段时间后,我使用enable_if追踪到我的问题的原因是一些意外的模板特化结果:以下代码在VisualStudio2010(和2008)中的DoTest()中断言失败,而在g++3.4.5中则没有。但是,当我从SomeClass中删除模板或将my_condition移出SomeClass的范围时,它也适用于MSVC。此代码是否有问题可以解释此行为(至少部分),或者这是MSVC编译器中的错误?(使用这个示例代码,boost和c++0xSTL版本是一样的)#include#includetemplateclassSomeClass{public:templatestruct

c++ - MSVC 常量枚举类型

constenumAlpha{X=9,Y=5,Z=2}p;intmain(){enumAlphaa,b;a=X;b=Z;p=X;p=Y;printf("%d",a+b-p);return0;}为什么在MSVC编译器中允许p=X和p=Y?此代码输出6。难道不应该在初始化时分配一个const值并且永远不会再分配吗? 最佳答案 那是编译器本身的错误。故事结束。事实上,您的小代码显示了编译器中的两个错误。第一个错误本身就在这里:constenumAlpha{X=9,Y=5,Z=2}p;//declarationofpisill-formed

c++ - 模板特化 - MSVC 和 GCC/MinGW 之间的不同行为

我特化了一个模板,并在MSVC编译器和MinGW/GCC之间遇到了不同的行为。这是头文件://MyClass.h#ifndefMYCLASS_HEADER#defineMYCLASS_HEADERtemplateclassMyClass{public:virtualvoiddoSomething(){//somecode}};//specializationprototypehere#endif现在,区别。为了避免多次定义,我只在头文件中特化了一个原型(prototype),实现在一个cpp文件中。特化是个问题。GCC/MinGW编译器只接受这个:templatevoidMyClass

c++ - MSVC 2017 中 STL 容器的移动构造函数未标记为 noexcept

我正在将我的项目从VS2015迁移到VS2017,这当然不会很顺利。我看到奇怪的编译器错误,可以通过以下代码重现:structMoveOnly{MoveOnly(){}MoveOnly(constMoveOnly&)=delete;MoveOnly&operator=(constMoveOnly&)=delete;MoveOnly(MoveOnly&&)=default;MoveOnly&operator=(MoveOnly&&)=default;booloperator==(constMoveOnly&rhs)const{returnfalse;}};structHasher{siz

c++ - 初始化结构成员时可能出现 MSVC 2013 错误

MSVC2013提示以下代码,而它在g++中按预期工作。这看起来像MSVC中的错误吗?#includeusingnamespacestd;structA{doublex=0.0,y=0.0;};intmain(){Aa{1.0,2.0};return0;}请注意,按如下方式更改struct可解决问题。structA{doublex,y;};错误信息是:Error1errorC2440:'initializing':cannotconvertfrom'initializer-list'to'A' 最佳答案 实际上,VisualStud

c++ - __builtin__FUNCTION() 是否有 MSVC 等价物?

根据这个answer我们可以在GCC中使用__builtin__FUNCTION()找到调用函数的名称。是否有MSVC等效项? 最佳答案 std::source_location将是future的跨平台解决方案,让您可以:voidlog(conststd::string&message,conststd::experimental::source_location&location=std::experimental::source_location::current()){std::cout在此之前,我所知道的最佳解决方案是使用宏

c++ - 为什么这段代码用 g++ 而不是 MSVC++ 编译?

我正在尝试编译一些开源代码(https://github.com/BieremaBoyzProgramming/bbpPairings),我可以使用g++(v6.3.0)在linux上编译这些代码,但无法在Visual中编译Studio(VSCommunity2019/16.1.5),有点晦涩难懂(对我来说,但我的C++确实很弱)错误:“错误C2143:语法错误:缺少';'在“源代码中的违规代码是here,但从代码中提取的最小示例是:#include#includeclassConfiguration{};classMatchesConfiguration{public:templat

c++ - 在 Qt Creator 中禁用编译器警告项目范围(使用 MSVC 时)

我想禁用特定警告,例如C++warningC4018:',但在整个项目范围内。我需要在我的.pro文件中放入什么才能达到这种效果? 最佳答案 将以下行添加到您的PRO文件中:QMAKE_CXXFLAGS+=/wd4996 关于c++-在QtCreator中禁用编译器警告项目范围(使用MSVC时),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/18454509/

ios - Xcode stdint.h #error 只有在使用 MSVC 编译时才应包含此文件

我在Xcode中有一个CocoaPodsReactNative项目,在过去几个月里,它99%的时间都在工作。(这1%是像这样的随机内容、链接器错误等……似乎是随机出现和消失的)。我今天安装了一个新的Pod及其相应的npm依赖项,过去我添加pod时有时会遇到问题,直到我尝试诸如poddeintegrate、podinstall,例如,react-nativelink并清理Xcode项目。但这一次似乎没有任何解决办法。每次我构建时,无论是模拟器还是物理设备,我都会从stdint.h得到以下错误只有在使用MSVC编译时才应包含此文件。找到错误源也很容易,它是在stdint.h中明确由用户定义