草庐IT

c++ - gcc 编译选项 std=c++1y 和 std=c++14 的区别

我安装了gcc4.9.2。我使用以下命令编译了程序:/root/gcc-4.9.2/bin/g++-std=c++1ytesting.cpp请注意,除了选项-std=c++1y之外,还有另一个选项-std=c++14。编译器会以相同的方式工作并为两个选项生成完全相同的可执行文件吗? 最佳答案 C++14是最新的ISO标准,除非你需要一些gcc非标准特性,否则应该使用它。c++1y是在c++14标准完成之前用来指代它的名称,因此它很可能遵循标准草案,但不是实际标准本身。两者之间可能存在一些细微差别,但c++14是ISO标准。简而言之,

c++ - 我可以忽略 gcc 警告 : ‘Foo::m_bar’ should be initialized in the member initialization list [-Weffc++]

structBar{Bar(){}};structFoo{Foo()=default;Barm_bar;};intmain(){Foofoo;}当使用C++11default关键字和gcc警告-Weffc++时,gcc输出:warning:‘Foo::m_bar’shouldbeinitializedinthememberinitializationlist[-Weffc++]忽略此警告是否安全?我应该向gcc提交错误吗? 最佳答案 您可以忽略或抑制警告。这是对有效C++指南之一的误解。该指南说更喜欢初始化而不是赋值,但在您的示例中

c++ - 我可以忽略 gcc 警告 : ‘Foo::m_bar’ should be initialized in the member initialization list [-Weffc++]

structBar{Bar(){}};structFoo{Foo()=default;Barm_bar;};intmain(){Foofoo;}当使用C++11default关键字和gcc警告-Weffc++时,gcc输出:warning:‘Foo::m_bar’shouldbeinitializedinthememberinitializationlist[-Weffc++]忽略此警告是否安全?我应该向gcc提交错误吗? 最佳答案 您可以忽略或抑制警告。这是对有效C++指南之一的误解。该指南说更喜欢初始化而不是赋值,但在您的示例中

c++ - 用于维护 API 向后二进制兼容性的 GCC 与 MS C++ 编译器

我来自Linux世界,知道很多关于维护用C++语言编写的动态库API的向后二进制兼容性(BC)的文章。其中之一是"Policies/BinaryCompatibilityIssuesWithC++"基于ItaniumC++ABI,由GCC编译器使用。但我找不到与MicrosoftC++编译器(来自MSVC)类似的东西。我了解大多数技术都适用于MSC++编译器,我想发现与ABI差异(v-table布局、修改等)相关的编译器特定问题所以,我的问题如下:在维护BC时,您知道MSC++和GCC编译器之间的区别吗?在哪里可以找到有关MSC++ABI或在Windows中维护APIBC的信息?任何相

c++ - 用于维护 API 向后二进制兼容性的 GCC 与 MS C++ 编译器

我来自Linux世界,知道很多关于维护用C++语言编写的动态库API的向后二进制兼容性(BC)的文章。其中之一是"Policies/BinaryCompatibilityIssuesWithC++"基于ItaniumC++ABI,由GCC编译器使用。但我找不到与MicrosoftC++编译器(来自MSVC)类似的东西。我了解大多数技术都适用于MSC++编译器,我想发现与ABI差异(v-table布局、修改等)相关的编译器特定问题所以,我的问题如下:在维护BC时,您知道MSC++和GCC编译器之间的区别吗?在哪里可以找到有关MSC++ABI或在Windows中维护APIBC的信息?任何相

c++ - 如何在启用 ANSI 的同时在 gcc 中启用 C++ 样式的注释?

这只是我工作的一个问题,所以我做了一点挖掘,答案是ExpertsExchange一个。所以我把你交给最初的提问者,Manchung:IhaveaprojectwritteninpureCwhichistobeusedinembeddedsystem.So,IusepureCtominimizethecodesize.WhenIcompiletheproject,Iusethe-ansiflaginordertomakesurethecodecomplieswiththeANSIstandard.However,thedownsideofusingthisansiflagisthatIa

c++ - 如何在启用 ANSI 的同时在 gcc 中启用 C++ 样式的注释?

这只是我工作的一个问题,所以我做了一点挖掘,答案是ExpertsExchange一个。所以我把你交给最初的提问者,Manchung:IhaveaprojectwritteninpureCwhichistobeusedinembeddedsystem.So,IusepureCtominimizethecodesize.WhenIcompiletheproject,Iusethe-ansiflaginordertomakesurethecodecomplieswiththeANSIstandard.However,thedownsideofusingthisansiflagisthatIa

c++ - VisualStudio 和 gcc 之间 *.dll *.a *.lib *.def 的兼容性

这很令人困惑。我花了很多时间在堆栈等上阅读有关此的帖子。仍然感到困惑。我正在使用Qt和C++进行编码。在Qt中,我将gcc选项用于编译器。问题是我尝试过的许多第3方库似乎都不起作用。我是.dll、.a、.lib、.def文件和库方案的新手。问题一:根据我有限的经验(到目前为止,我已经尝试了7或9个库),库的供应商很少告诉您.dll是用VisualStudio还是gcc制作的。这增加了很多困惑。他们几乎从未明确说明该库与哪种编译器兼容。所以我会很感激一些关于如何处理这个噩梦的现实生活中的提示。我尝试的几乎所有库都是开源项目。我不会在这里命名,但这些都是众所周知的项目。我确定问题是我缺乏知

c++ - VisualStudio 和 gcc 之间 *.dll *.a *.lib *.def 的兼容性

这很令人困惑。我花了很多时间在堆栈等上阅读有关此的帖子。仍然感到困惑。我正在使用Qt和C++进行编码。在Qt中,我将gcc选项用于编译器。问题是我尝试过的许多第3方库似乎都不起作用。我是.dll、.a、.lib、.def文件和库方案的新手。问题一:根据我有限的经验(到目前为止,我已经尝试了7或9个库),库的供应商很少告诉您.dll是用VisualStudio还是gcc制作的。这增加了很多困惑。他们几乎从未明确说明该库与哪种编译器兼容。所以我会很感激一些关于如何处理这个噩梦的现实生活中的提示。我尝试的几乎所有库都是开源项目。我不会在这里命名,但这些都是众所周知的项目。我确定问题是我缺乏知

c++ - GCC 中的 std::string 实现及其短字符串的内存开销

我目前正在为低内存平台开发一个应用程序,该应用程序需要一个包含许多短字符串(>100,000个字符串,每个字符串包含4-16个字符)的std::set。我最近将此集合从std::string转换为constchar*以节省内存,我想知道我是否真的避免了每个字符串的所有开销。我尝试使用以下方法:std::stringsizeTest="testString";std::cout但它只是给了我一个4个字节的输出,表明该字符串包含一个指针。我很清楚字符串在内部将数据存储在char*中,但我认为字符串类会产生额外的开销。std::string的GCC实现是否比sizeof(std::strin