草庐IT

MSVC_VERSION

全部标签

c++ - GCC 和 MSVC 之间的 digits10 差异

我有以下代码:#include#includeintmain(){std::cout::digits10GCC4.4返回19MSVS9.0返回18有人可以解释一下为什么两者之间有区别吗?无论编译器如何,我都希望这样的常量是相同的。 最佳答案 如果VisualC++2008返回18对于std::numeric_limits::digits10,这是一个错误(我没有安装VisualC++2008来验证所描述的行为)。在VisualC++中(至少对于32位和64位Windows),unsignedlonglong是64位无符号整数类型,能

c++ - std::vector 保留后 operator[] 上 msvc 和 gcc 之间的行为差​​异,哪个是对的?

Thissnippetofcode使用msvc(越界错误)惨遭失败,但似乎在gcc和clang上都能正常工作。什么是正确的行为?#include#includeintmain(){std::vectorv;v.reserve(10);for(inti=0;i 最佳答案 行为未定义。reserve只保留内存,不影响容器的大小。也许您想使用resize?std::vectorv;v.resize(10);for(inti=0;i虽然在这种情况下你可以写std::vectorv(10);for(inti=0;i或者,您可以将reserve

c++ - 我怎样才能让 g++ 模仿 MSVC++ 的模板实例化行为?

我正在尝试将我自己的库从VisualStudio移植到GNU/Linux上的g++,但我遇到了一些模板编译问题。事实上,在VisualC++中,只有在代码中明确使用模板时才会生成模板,而g++似乎(从我的错误来看)在模板首次使用之前评估模板的内容。这会导致以下错误:error:incompletetype‘X’usedinnestednamespecifier...因为我在模板代码之后而不是之前包含了一些类。由于交叉使用冲突,我这样做。总而言之,VisualC++似乎不会尝试在使用时解析模板的内容,而g++会尽快解析。classMyClass;templatevoidfunc(MyCl

c++ - lambda 表达式的右值和左值引用 - gcc 与 msvc

在C++中,将右值隐式转换为左值引用是非法的。考虑以下代码,其中左值引用绑定(bind)到右值(lambda):intmain(){auto&f=[]()->void{};return0;}gcc(4.8.1)不接受这样的代码(完全有道理)。但是,Microsoft编译器确实接受它,这意味着它要么接受非标准代码,要么C++允许左值引用绑定(bind)到右值lambda表达式的特殊情况。问题:哪个假设是正确的? 最佳答案 您问题的核心是:rvalues可以绑定(bind)到non-constlvalue引用吗?标准说不。rvalues

c++ - 使用无捕获 lambda 表达式作为条件运算符的第二个和第三个操作数时出现 MSVC 错误

下面的代码被GCC和Clang欣然接受-std=c++14但会导致VisualStudio2013出现编译错误。#include#include#includeusingnamespacestd;intmain(){autoincreasing=[](intlhs,intrhs){returnlhsrhs;};std::vectorv(0,10);boolincrease=true;std::sort(v.begin(),v.end(),increase?increasing:decreasing);return0;}错误是:main.cpp(11):errorC2446:':':no

详解‘CUDA driver version is insufficient for CUDA runtime version

目录详解'CUDAdriverversionisinsufficientforCUDAruntimeversion'背景解决方法步骤1:查看CUDA运行时要求的驱动程序版本步骤2:检查当前CUDA驱动程序版本步骤3:更新CUDA驱动程序步骤4:验证更新结果步骤5:重新运行CUDA应用程序结论详解'CUDAdriverversionisinsufficientforCUDAruntimeversion'当你在使用CUDA运行时时,有时可能会遇到这样的错误消息:'CUDAdriverversionisinsufficientforCUDAruntimeversion'。这个错误消息表示CUDA运行

c++ - MSVC 默认内存对齐为 8

根据MSDN,/Zp命令默认为8,这意味着使用64位对齐边界。我一直假设对于32位应用程序,MSVC编译器将使用32位边界。例如:structTest{charfoo;intbar;};编译器会像这样填充它:structTest{charfoo;charpadding[3];intbar;};因此,由于默认使用/Zp8,这是否意味着使用上面的相同示例我的填充变为7+4字节:structTest{charfoo;charpadding1[7];intbar;charpadding2[4];};//Structurehas16bytes,endingonan8-byteboundary这有

c++ - 如何忽略 MSVC 中未初始化的变量错误

我在使用MSVS编译器时遇到问题,我有以下代码:if(!list){*type=raw_data[*i++];ptr=(char*)&size;ptr[1]=raw_data[*i++];ptr[0]=raw_data[*i++];name=newchar[size+1];memcpy(name,raw_data+*i,size);name[size]='\0';*i+=size;}之后:if(!list){s->name=name;s->name_size=size;}list的值在这个函数中没有改变,但是由于这个错误我无法编译代码:Error1errorC4703:potentia

c++ - MSVC - 有什么方法可以检查函数是否实际上是内联的?

我必须检查一个函数是否被编译器内联。有没有办法不看汇编(我不读)就可以做到这一点。我没有办法解决这个问题,所以我宁愿我们不能讨论这样做的智慧。谢谢! 最佳答案 如果您启用警告C4714、C4710和C4711,它应该会为您提供有关哪些函数是内联的和未内联的相当详细的信息。 关于c++-MSVC-有什么方法可以检查函数是否实际上是内联的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/question

checking OpenSSL library version... configure: error: OpenSSL >= 1.1.1 required (have “100020bf 解决方案

  大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理解,而且能够帮助新手快速入门。  本文主要介绍了checkingOpenSSLlibraryversion…configure:error:OpenSSL>=1.1.1required(have“100020bf(OpenSSL1.0.2k-fips26Jan2017)”)解决方案,