草庐IT

C++标准

全部标签

C++ 标准 : return by copy to initialize a reference without RVO: is there any copy?

让我们考虑下一个示例:structbig_type{};//Returnbycopyautofactory(){returnbig_type{};}voidany_scope_or_function(){big_type&&lifetime_extended=factory();}假设RVO被禁止或根本不以任何方式存在,big_type()是否会或可以被复制?还是将引用直接绑定(bind)到return语句中构造的临时对象?我想确保big_type析构函数仅在any_scope_or_function结束时被调用一次。我使用C++14,以防某些行为在标准版本之间发生变化。

c++ - 标准异常邀请不安全使用?

建议您总是抛出从std::exception派生的东西,并且有一些预定义的特化,例如std::runtime_errorstd::exception的接口(interface)是根据非抛出访问器给出的。伟大的。现在查看std::runtime_error的构造函数classruntime_error:publicexception{public:explicitruntime_error(conststring&);};所以如果我这样做try{foo();}catch(...){throwstd::runtime_error("bang");}foo完全有可能因为内存不足而抛出,在这种

c++ - 为什么 std::FILE 是大写字母?

我想知道为什么C和C++的FILE类型拼写为大写字母。其他类型用小写字母拼写。编辑参见C++11的§27.9.2,表134 最佳答案 在非常古老的C方言中,在有任何标准化之前,当FILE类型被发明时,并且在typedef存在之前,该名称是一个宏:#defineFILEstruct_iobuf惯例是让宏以全部大写命名。http://minnie.tuhs.org/cgi-bin/utree.pl?file=V7/usr/include/stdio.h(小写的宏只是函数的优化版本——其中许多也作为适当的函数存在)

c++ - 函数异常规范和标准异常 - foo() throw(Exception)

在C++中,您可以像这样声明具有异常规范的函数:intfoo()constthrow(Exception);我找到了这两个链接:http://www.cplusplus.com/doc/tutorial/exceptions/和http://publib.boulder.ibm.com/infocenter/lnxpcomp/v8v101/index.jsp?topic=%2Fcom.ibm.xlcpp8l.doc%2Flanguage%2Fref%2Fcplr156.htm但有几件事最终没有答案......问题1:为什么要添加异常规范?它会带来任何性能提升吗?编译器会有什么不同?因为

c++ - C 和 C++ 中反斜杠后的空白字符

C和C++标准对反斜杠后的空白字符(或几个字符)有何规定?它是否保证无论如何都会加入行?intmain(){//Comment\intfoo;}在这种情况下,MSVC和gcc的工作方式不同。 最佳答案 作为引用,标准引述是(§2.2/1,删节,强调我的):PhasesofTranslation[...]2.Eachinstanceofabackslashcharacter(\)immediatelyfollowedbyanew-linecharacterisdeleted,splicingphysicalsourcelinestof

c++ - 替换标准 C++ 分配器?

我想用更健壮的分配器替换标准分配器(C++标准只需要对vector::resize进行溢出检查)。许多库提供的各种C++分配器在进行负面self测试时会一败涂地。我可以使用更强大的分配器。ESAPI的分配器不仅检查溢出,它还有调试仪器来帮助发现错误。http://code.google.com/p/owasp-esapi-cplusplus/source/browse/trunk/esapi/util/zAllocator.h.是否有一种标准方法可以轻松替换程序中使用的C++分配器?我还想确保它在库代码中被替换,我可能无法访问源代码。 最佳答案

c++ - 将代码编译为特定的 C/C++ 标准

我尝试用谷歌搜索这个,但我得到的只是关于如何编译基本程序的结果。是否可以通过指定代码应编译为C89、C99、C++98等,使用Clang++和G++将代码编译为特定的C++标准? 最佳答案 您可以使用-std标志。例如,要编译为C99,请使用-std=c99它的文档是here 关于c++-将代码编译为特定的C/C++标准,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/139210

c++ - 使用编译器定义的宏连接

这应该很简单,但我正在努力弄明白。我有PROJECT_NAME作为编译器(g++)-D定义,我想将它与其他一些文本连接起来以形成命名空间名称。我目前的做法是:#defineVERSION_NAMESPACEPROJECT_NAME##Versioning对于我当前的项目,我希望VERSION_NAMESPACE为Syren_DLLVersioning。相反,我得到一个编译器错误:error:'PROJECT_NAMEVersioning'hasnotbeendeclared但是根据g++调用,PROJECT_NAME被正确定义:ccacheg++...-DPROJECT_NAME=Sy

c++ - 为什么小数点后的数字都是零?

我想执行一些计算,我希望结果正确到小数位,比如12。于是我写了一个样例:#definePI3.1415926535897932384626433832795028841971693993751doubled,k,h;k=999999/(2*PI);h=999999;d=PI*k*k*h;printf("%.12f\n",d);但它给出了输出:79577232813771760.000000000000我什至使用了setprecision(),但答案相同,而不是指数形式。cout打印7.95772328138e+16也用过longdouble,但是没有用。除了将整数部分和小数部分分别存储

c++ - Xcode 使用哪个 C/C++ 编译器?

我刚刚开始接触C/C++,但我仍在思考不同的概念(我之前主要编写Java)。我真的很想知道使用了哪个C/C++编译器以及包含了哪个标准库。另外,我想知道在哪里可以找到相应标准库的API文档(如JavaSEAPI文档)。 最佳答案 对于C++:Xcode4.6.2使用ClangC++编译器前端和LLVM作为后端,符合C++11标准,并使用libc++作为标准库。Here您可以找到有关libc++的苹果演示文稿。 关于c++-Xcode使用哪个C/C++编译器?,我们在StackOverfl