草庐IT

Standards

全部标签

c++ - 名称或类型具有某种语言链接意味着什么?

根据(c)ANSIISO/IEC14882:2003,第127页:Linkagespecificationsnest.Whenlinkagespecificationsnest,theinnermostonedeterminesthelanguage.Alinkagespecificationdoesnotestablishascope.Alinkage-specificationshalloccuronlyinnamespacescope(3.3).Inalinkage-specification,thespecifiedlanguagelinkageappliestothefunc

c++ - 名称或类型具有某种语言链接意味着什么?

根据(c)ANSIISO/IEC14882:2003,第127页:Linkagespecificationsnest.Whenlinkagespecificationsnest,theinnermostonedeterminesthelanguage.Alinkagespecificationdoesnotestablishascope.Alinkage-specificationshalloccuronlyinnamespacescope(3.3).Inalinkage-specification,thespecifiedlanguagelinkageappliestothefunc

c++ - C 和 C++ 标准之间的关系是什么?

我在写thisanswer我引用了http://en.cppreference.com/w/cpp/string/byte/tolower#ParametersIsnotrepresentableasunsignedcharanddoesnotequalEOF,thebehaviorisundefined当我去检查时theeditthathadaddedthisphrase我发现作者的评论:Can'tusenegativesignedcharswithanyctype.hfunctionperC997.4/1作者引用了C++文档中的C99标准。那有效吗?我在C++标准中找不到关于这个函

c++ - C 和 C++ 标准之间的关系是什么?

我在写thisanswer我引用了http://en.cppreference.com/w/cpp/string/byte/tolower#ParametersIsnotrepresentableasunsignedcharanddoesnotequalEOF,thebehaviorisundefined当我去检查时theeditthathadaddedthisphrase我发现作者的评论:Can'tusenegativesignedcharswithanyctype.hfunctionperC997.4/1作者引用了C++文档中的C99标准。那有效吗?我在C++标准中找不到关于这个函

c++ - 为什么 Visual Studio Community 2017 C++ 标准是 C++98?

昨天我升级到最新的VSCommunity2017(上一个是去年安装的),想检查一下C++标准。所以我运行下面的代码来检查它,结果我有C++98:#includeusingnamespacestd;intmain(){cout哪些输出199711为什么我没有最新的C++标准? 最佳答案 __cplusplus的值在默认情况下暂时故意不符合当前版本的VisualStudio,以避免破坏现有代码。这并不意味着您的编译器不支持任何C++11(或更新的)功能。引自MSVCnowcorrectlyreports__cplusplus:/Zc:_

c++ - 为什么 Visual Studio Community 2017 C++ 标准是 C++98?

昨天我升级到最新的VSCommunity2017(上一个是去年安装的),想检查一下C++标准。所以我运行下面的代码来检查它,结果我有C++98:#includeusingnamespacestd;intmain(){cout哪些输出199711为什么我没有最新的C++标准? 最佳答案 __cplusplus的值在默认情况下暂时故意不符合当前版本的VisualStudio,以避免破坏现有代码。这并不意味着您的编译器不支持任何C++11(或更新的)功能。引自MSVCnowcorrectlyreports__cplusplus:/Zc:_

c++ - 为什么 C 或 C++ 标准不明确将 char 定义为有符号或无符号?

intmain(){charc=0xff;boolb=0xff==c;//UndermostC/C++compilers'defaultoptions,bisFALSE!!!}C或C++标准都没有将char指定为有符号或无符号,它是实现定义的。为什么C/C++标准没有明确将char定义为有符号或无符号,以避免像上面的代码这样的危险误用? 最佳答案 主要是历史原因。char类型的表达式在大多数情况下都被提升为int(因为很多CPU没有8位算术运算)。在某些系统上,符号扩展是执行此操作的最有效方式,它主张使普通char签名。另一方面,E

c++ - 为什么 C 或 C++ 标准不明确将 char 定义为有符号或无符号?

intmain(){charc=0xff;boolb=0xff==c;//UndermostC/C++compilers'defaultoptions,bisFALSE!!!}C或C++标准都没有将char指定为有符号或无符号,它是实现定义的。为什么C/C++标准没有明确将char定义为有符号或无符号,以避免像上面的代码这样的危险误用? 最佳答案 主要是历史原因。char类型的表达式在大多数情况下都被提升为int(因为很多CPU没有8位算术运算)。在某些系统上,符号扩展是执行此操作的最有效方式,它主张使普通char签名。另一方面,E

c++ - 在 C++ 函数调用中使用自增运算符是否合法?

thisquestion中发生了一些争论。关于以下代码是否合法的C++:std::list::iteratori=items.begin();while(i!=items.end()){boolisActive=(*i)->update();if(!isActive){items.erase(i++);//***Isthisundefinedbehavior?***}else{other_code_involving(*i);++i;}}这里的问题是erase()将使有问题的迭代器无效。如果在评估i++之前发生这种情况,那么像这样递增i在技术上是未定义的行为,即使它看起来可以与特定的编

c++ - 在 C++ 函数调用中使用自增运算符是否合法?

thisquestion中发生了一些争论。关于以下代码是否合法的C++:std::list::iteratori=items.begin();while(i!=items.end()){boolisActive=(*i)->update();if(!isActive){items.erase(i++);//***Isthisundefinedbehavior?***}else{other_code_involving(*i);++i;}}这里的问题是erase()将使有问题的迭代器无效。如果在评估i++之前发生这种情况,那么像这样递增i在技术上是未定义的行为,即使它看起来可以与特定的编