草庐IT

c++ - 无法在 VS 14 CTP : conditional expression of type 'void' is illegal 中使用 auto 声明 lambda

使用VisualStudio2014CTP、C++(v140)编译器:autogp=[&](BYTE*buff){autogp1=[](char*bff,char**p1){*p1=strstr((char*)bff,"(");return(*p1);};};错误:conditionalexpressionoftype'void'isillegal(也许auto真的输入错误?)如果我将内部lambda声明为std::functiongp1然后就可以了是我做错了什么还是编译器错误? 最佳答案 我没有运行2014,但您可能需要指定内部l

c++ - visual c++ 2013 是否有使用旧方言的选项(如 gcc 的 -std=c++98)?

我有一些代码可以在VisualC++2013中编译,但我被告知它不能在VC++2010中构建(因为它使用了微妙的c++11ism)。当然,我要做的是用两个编译器进行测试,但是......没有办法在VisualC++2013中关闭c++11并让它只接受c++08,正如我认为gcc的-std=c++98选项那样? 最佳答案 对于这种情况,唯一的方法是在项目->属性->常规中将PlatformToolset更改为VisualStudio2010(v100)。一旦你改变它,你将在VS2013下运行VC++2010编译器。

c# - Visual Studio 2013 C++ 智能感知

我使用的是visualstudio2013C++,我的IntelliSense有点奇怪,例如,当我为constcon时em>IntelliSense选择器在const中,但尚未突出显示,因此我必须向下移动箭头然后按Enter。我怎样才能使它类似于C#IntelliSense,比如当我按下空格键或输入时它会自动选择const? 最佳答案 您应该改为按TAB键。选择器中的任何内容都会为您输入。例如,在您的示例中,当您键入con并且选择器位于const中时,按下TAB键,将键入const。 关

c++ - 如果存在则使用它/检测 C++ 中当前作用域的调用约定(thiscall vs cdecl)

我正在尝试编写一个健壮的宏,它将在thiscall和cdecl调用约定中工作,但如果“this”存在(thiscall),则利用“this”获取更多信息。这可能吗?这是一个不起作用的例子:#definePRINT_IF_THIS_EXISTS\if(this)printf("this(addr%08x)existsin%s!\n",size_t(this),__FUNCTION__)structMyStruct{voidMyFunc(){PRINT_IF_THIS_EXISTS;}};voidStaticFunc(){PRINT_IF_THIS_EXISTS;MyStructms;ms

c++ - 无法在 VS 2013 社区中创建 C++ 项目

在我选择“Win32控制台应用程序”或“Win32项目”并通过向导后,我得到了一个空的解决方案。“新建项目”对话框再次弹出:尝试CLR类下的项目类型时报错:它说了一些关于访问OLE系统注册表的事情。但WindowsStoreC++应用程序项目和其他语言工作得很好。我尝试过:使用安装程序提供的修复功能。运行vs_community.exe/uninstall/force并重新安装。删除C:\ProgramFiles(x86)\MicrosoftVisualStudio12.0\Common7\IDE中的ProjectTemplatesCache和ItemTemplatesCache目录,

c++ - 理解 double-to-int 转换中的 int-vs-trunc 关系

当我运行以下代码时#include#includeusingnamespacestd;intmain(){enum{FACTOR=3};doubled=1.0/FACTOR;doubled_i=int(d*FACTOR);inti_t=std::trunc(d*FACTOR);doubled_r=std::round(d*FACTOR);cout在Code::Blocks17.12IDE中(使用我认为/希望的全包工具),我得到了这些令人困惑的结果:0vs1vs1我尝试更改编译器,但没有任何改变。最后我安装了MinGW-64版本8.1.0。我的构建日志显示--------------Cl

c++ - Microsoft VS C++ 编译器是否存在 Bug Initialize a reference from a temporary object

这个问题在这里已经有了答案:关闭11年前。PossibleDuplicate:Bindingtemporarytoalvaluereference使用VS2008C++编译器编译代码无编译错误。classA{};intmain(){A&a_ref=A();return0;}我相信C++标准,包括C++2003和即将到来的C++0x,都不允许它。而且我还遇到了gcc编译器的编译时错误。所以我想知道的是,这是VS编译器允许从临时对象初始化引用的已知错误。还是VS编译器的功能扩展?如果是,临时对象的生命周期是多少?

C++,VS2010 : Avoid downloading MS redistrubutable package. 静态链接?

VS2010能否将所有内容链接到所需的exe文件中?还是把MSVS2010的文件放到安装包里?我不希望用户考虑下载和安装某些东西。 最佳答案 在一个大型的MFC项目中尝试过为此使用静态链接,使用VS2010,我发现我仍然需要运行VS2010SP1redist包。该软件在很大程度上没有它也能正常工作,但用户会看到相当多的额外随机错误,这些错误似乎在安装redist后奇迹般地消失了。我猜它会更新运行时所依赖的其他Windows组件,但这只是一个猜测。我的建议是将它包含在您的安装中。 关于C+

c++ - 这是一个 VS2012 优化错误吗?

在这里完成VS2010到2012的更新,有几个单元测试由于错误的代码生成或编程错误而失败,但我不确定是哪个。我发布的代码几乎与原始代码相同,并且也重现了问题。这是一个案例;所有类/实现都在单独的文件中。classBase{public:virtual~Base(){}voidDoIt(){DoItImpl();}protected:virtualvoidDoItImpl()=0;};classBase2:publicBase{public:virtualvoidDoStuff()=0;};classImpl:publicBase2{public:Impl();voidDoStuff()

c++ - windbg 和 VS 找不到我的 pdb 文件

我有一个使用SCons和MSVS2013(express)编译器(从命令行编译)构建的项目。它编译并运行,但是,它会定期崩溃,所以我想调试它。我添加了以下标志:/Zi#Debugsymbols/DEBUG#Debugsymbols/FS#Concurrentdebugdatabasefileaccess构建后,我看到生成了一个名为vc120.pdb的pdb文件。我的可执行文件位于build文件夹中,pdb文件位于主项目目录中。但是,当我尝试附加我的可执行文件以通过VS2013或WinDbg进行调试时,我总是收到无法找到调试符号的错误。我在VS2013和WinDbg中都将“路径”添加到p