草庐IT

c++ 14 vs 11 - sizeof 返回不同的值?

对于同一个程序,c++11返回212,但对于c++14,返回211给我。我很困惑..#include#includeusingnamespacestd;intmain(){chara[2];cout 最佳答案 charc[b.size()+1];在标准C++中是不允许的,任何版本。如果您发现一个编译器接受它,那么它就是一个编译器扩展,因此您应该查阅您使用的任何编译器的文档。 关于c++14vs11-sizeof返回不同的值?,我们在StackOverflow上找到一个类似的问题:

C++11 外部作用域变量声明为 auto

在可用的C++中,对许多变量使用auto是一种很好的做法,尤其是那些类型已知但输入起来很烦人的变量:weird_template_type::subtype::recursive_subtypesome_function(){//...}//...autoval=some_function();在有意义的情况下,对RAII对象使用显微镜也很好,例如用于锁定:some_setup_code();intval;{lock_guardlk(mut);val=read_shared_memory();}do_something(val);有没有办法混合这两个成语,例如当您的共享内存读取代码返回

C++11/14 和 return( ... ) 与 return

在C++中,您可以编写如下所示的return语句:return(...);这与更流行的不同:return...;特别是第一个版本返回包含该return语句的函数堆栈的局部地址/引用。现在为什么有些东西想要返回对当时没有生命周期的东西的引用?这个成语的用例是什么?考虑到C++11和C++14的新流行语和特性,这有不同的用法吗? 最佳答案 形式为returnexpression;表达式可以是任何东西,包括带括号的表达式。这些不是不同的形式返回,但是,一起使用decltype(auto)将推导出不同的类型。

c++ - 使用 C++11 Lambda 函数更改 vector(list, deque...) 中的所有元素

我有以下代码:#include#include#includeintmain(intargc,char*argv[]){std::vectorobj;obj.push_back(10);obj.push_back(20);obj.push_back(30);std::for_each(obj.begin(),obj.end(),[](intx){returnx+2;});for(int&v:obj)std::cout结果是:10、20、30我想使用新C++11标准的Lambda函数更改vector(obj)中的所有元素。这是for_each函数的实现代码:templateFunctio

c++ - 理解 C++11 中的正则表达式

我正在尝试学习C++11中的正则表达式。一定是做错了什么,因为括号或转义序列似乎都不起作用。这是我的代码:#include#include#includeusingnamespacestd;intmain(){try{cout输出:\d*(.\d*)?;regex_error.Code:2Theexpressioncontainedaninvalidescapedcharacter,oratrailingescape.我做错了什么?更新gcc版本4.8.220131212(红帽4.8.2-7)(海湾合作委员会)clang版本3.3(标签/RELEASE_33/final)libstdc

C++ DX11 应用程序仅在 Visual Studio IDE 中运行

好吧,我在MSDN论坛上提出了这个问题,但尚未收到任何类型的回复,所以我想我应该试试StackOverflow。我目前正在Win7上使用VS2008开发DirectX应用程序。我最近遇到了一个内存分配类的严重内存损坏错误,该错误会占用字节对齐的内存。在此错误期间,我仍然可以运行调试并发布可执行文件,但是它会由于指令损坏或其他原因而崩溃,但它仍会执行一段时间直到崩溃。然后我剥离了整个内存分配类。该应用程序在IDE(发布和调试版本)中运行完美,但我根本无法运行任何可执行文件。他们立即因无响应/停止工作错误而崩溃。而且我不认为这是我的环境,因为我在另一台之前没有问题的计算机上遇到了同样的问题

c++ - 为什么在 Xcode 中使用 libpng 会出现兼容性版本问题?

我在OSX10.7.1上将libpng与Xcode4.2结合使用时遇到问题。我的程序无法启动并出现错误:dyld:Librarynotloaded:/usr/X11/lib/libpng15.15.dylib和:Reason:Incompatiblelibraryversion:glsl_testrequiresversion20.0.0orlater,butlibpng15.15.dylibprovidesversion17.0.0我所做的只是将/usr/X11/libpng.dylib添加到链接库中,那么这个“版本20”要求从何而来?为什么Xcode不只需要可用的版本?我该如何告诉

c++ - 如何使用 VS2003 工具集从 VS11 中构建 C++ 项目?

我尝试将适用于VisualC++2005的(工作)平台工具集的拷贝添加到C:\ProgramFiles(x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\Win32\PlatformToolsets\v71,替换所有有道理。但是当我尝试编译我的项目时,输出结果令人失望:1>Microsoft(R)32-bitC/C++OptimizingCompilerVersion13.10.6030for80x861>Copyright(C)MicrosoftCorporation1984-2002.Allrightsreserved.1>1>clÿþ/1>1>c

c++ - 仅当类重写方法时,XCode 4.3/4.4 类型信息才会在动态加载的共享库中实例化的类丢失

我在运行时加载的共享库中实例化的对象上使用dynamic_cast时遇到了一个问题,但前提是该类包含一个覆盖另一个方法的方法。我正在使用带有“AppleLLVM3.1编译器”的Xcode4.3我已经在Linux上使用gcc和clang编译了相同的代码并且没有问题所以我假设它是Xcode中的编译器错误但是有有人以前见过这个吗?假设类定义在名为“test3.h”的header中#pragmaonceclassc1{public:virtual~c1();virtualvoidfoo();};classc2:publicc1{public:voidfoo()override;};classc

c++ - (cin >> int).get() 在 Xcode(4.3.3) 中无法正常工作

我目前正在编写“C++PrimerPlus”一书并进行一些编程练习。看起来,我在使用Xcode(4.3.3)时遇到问题,因为以下代码无法正常工作:#include#includestructcar{std::stringmaker;intyear;};intmain(){usingnamespacestd;cout>nCars).get();car*aCars=newcar[nCars];for(inti=0;imaker);cout>(aCars+i)->year).get();}coutyearmaker问题是,我没有机会进入任何制造商。该程序直接转到我必须输入年份的位置,即使我使