g++相关内容
我正在尝试弄清楚如何缩小在最新 QT SDK (4.8.2)(基于 mingw/g++)下编译的 EXE 文件的大小.我正在开发一个香草 c++ 控制台应用程序,它有一个简单的循环并且只有#includes iostream,当我注意到它生成的 exe 大约为 465kb 时;比他们应该的要大得多!注释掉所有流的东西会使它降低到预期的 5kb 范围(尽管剩余的代码大部分都是死的).这似乎根本不对,
..
可能重复: C/C++ 编译器的最佳编译器警告级别? GCC 有数以千计的选项来添加更多警告;我希望 -Wall -Wextra -pedantic 包含所有有用的,但现在我遇到了 -Woverloaded-virtual 这对我来说真的很好. 您还使用或推荐哪些其他 G++ 参数? 解决方案 不是完全相同的类别,但我总是用 -Werror 编译以将警告标记为错误.很有用.
..
我有一个像这样的工会 union bareVec8f {__m256 m256;//avx 8x 浮点向量浮动浮动[8];整数整数[8];内联 bareVec8f(){}内联 bareVec8f(__m256 vec){这->m256 = vec;}内联 bareVec8f &operator=(__m256 m256) {这->m256 = m256;返回*这个;}内联运算符 __m256
..
有一个 Debian g++-4.4 包,但它不是 Ubuntu.网络上有太多被系统破坏的恐怖故事. 如何在 Ubuntu 上安装 g++ 4.4? 解决方案 看看这个 URL.我从那里安装了 gcc-4.4(和 g++-4.4),这似乎是实际上将 gcc-4.4 放入 ubuntu .deb 的最官方的黑客组织.到现在运行没有问题: https://launchpad.net
..
我有一个 C++ 翻译单元,我需要为其中的两个类禁用 RTTI,但仅此而已.有没有类似 #pragma rtti(off) 或者我可以使用的东西? 我只需要为该类禁用 RTTI.我不 throw 或 catch 或 dynamic_cast 或任何此类,所以我根本不需要 RTTI.它的方法的实现当然需要在 RTTI 上编译,因为它们确实可以抛出异常,我需要抑制的只是这个 typeinfo 对
..
GCC 可以对它接受参数的顺序非常挑剔: # 有效.g++ Foo.cpp -L.-一世.-lBar -o Foo# 链接器错误.g++ -o Foo -I.-L.-lBar Foo.cpp 具体来说,命令行选项的排序要求是什么? 解决方案 库是根据需要的符号按需加载的,因此提供其他东西所需符号的库必须遵循其他东西.这是历史性的;可以说,现代系统应该自动解析符号,明智地处理循环(这就是
..
尝试学习如何在 C++11 中使用新的 std::regex.但是我尝试的示例是抛出一个我不明白的 regex_error 异常.这是我的示例代码: #include #include 主函数(){std::string str = "xyzabc1xyzabc2xyzabc3abc4xyz";std::regex re("(abc[1234])");//
..
我最近遇到了一个奇怪的问题,在迭代多重集时我会得到一个 const_iterator 而不是预期的 iterator.结果证明这对 MSVC 来说不是问题,但 g++ 给了我一个错误: 错误:初始化无效'myPtr&' 类型的引用从'const 类型的表达式boost::shared_ptr' 相关代码: typedef std::multiset;我的清单;我的清单 _mystuf
..
为什么必须使用 -ffast-math 和 g++ 来实现使用 doubles 的循环向量化?我不喜欢 -ffast-math 因为我不想失去精度. 解决方案 使用 -ffast-math 不一定会丢失精度.它只影响NaN、Inf等的处理以及操作执行的顺序. 如果您不希望 GCC 重新排序或简化计算的特定代码段,您可以使用 asm 语句将变量标记为正在使用. 例如,以下代码对
..
为什么我会收到 discard qualifiers 错误: customExc.cpp:在成员函数‘virtual const char* CustomException::what() const’中:customExc.cpp:错误:将“const CustomException"作为“char customException::code()"的“this"参数传递会丢弃限定符 关于以下
..
我正在尝试访问 std::popcount,但它似乎是 仅在 C++ 20 中存在. 当我尝试使用 g++ -std=c++20 main.cpp 进行编译时,它显示 g++: error: unrecognized command line option '-std=c++20';你是说'-std=c++03' 我如何告诉 g++ 使用 c++ 20? 我使用的是 Ubuntu
..
过去,我使用 gcc 的 C99 风格的复合文字扩展C++ 在代码中编码嵌套的常量数据结构.这是一个例子: #include 使用命名空间标准;结构树{常量字符*名称;常量树*左;常量树*对;};常量树 *常量树 = (树 []) {"top",//名称(树[]) {“剩下",0,0},(树[]) {“对",0,0}};静态无效转储(常量树*树){如果(!树){cout 左)
..
我有一个返回 char* 的函数.由于我必须连接一些字符串,所以我写了以下行: std::string other_text;//...func(("文本" + other_text).c_str()); 我知道我可以避免命名我想使用的字符串的问题.我只是想借此机会提出一个更笼统的问题:调用临时变量的方法是否安全?是否符合标准? 解决方案 调用临时变量的方法是安全的,但返回临时变量的c
..
不久前,我决定升级到 GCC 4.8,以便尽早开始使用一些 c++11 功能.不过,我有点走神了,直到几天前的一个项目才真正使用任何新功能(新编译器似乎工作正常,但这可能只是因为我没有使用任何新功能.) 在这个新项目中,当我使用 =std=c++11 标志编译时,我没有遇到任何问题.但是,在运行时,我收到错误: ./main:/usr/lib/i386-linux-gnu/libstd
..
使用 g++ 的正确方法是什么: 模板 空隙 g (F f);模板 解决方案 我想你也需要在捕获列表中展开pack a,像这样: 模板 无效 f (A ... a) {g ([&, a...] () { h (a...); });} 这是来自 C++0x 最终委员会草案,第 5.1.2.23 节的相关文本: 捕获后跟省略号是包扩展(14.5.
..
以下代码: #include #include 使用命名空间标准;constexpr int N = 1000000;constexpr int f(int x) { return x*2;}typedef 数组一个;模板struct F { static constexpr A f() { return A{{ ::f(i)...
..
我有一个 MCVE,它在使用 g++ 4.4.7 版编译时在我的一些机器上崩溃,但可以在 clang++ 3.4.2 版和 g++ 6.3 版中使用. 我想知道它是来自未定义的行为还是来自这个古老版本的 gcc 的实际错误. 代码 #include 类 BaseType{上市:BaseType() : _present( 假 ) {}虚拟 ~BaseType() {
..
根据此链接,.natvis 文件可用于可视化原生对象.具体来说,我希望能够使用 这个 .natvis 文件. 但是,上面的链接不包含有关如何在 VS Code 中实际使用 .natvis 文件的任何信息.是否可以使用自定义 .natvis 文件? 这是我的launch.json文件供参考: {//使用 IntelliSense 了解可能的属性.//悬停查看现有属性的描述.//更多信息
..
我正在尝试强制 cmake 使用 g++ 构建我的 cpp 代码,因为默认情况下它使用 clang.所以我使用: cmake -D CMAKE_CXX_COMPILER=g++ ../src/CMakeLists.txt 之后 cmake 检查 gcc 和 g++ (成功),但仍然 make VERBOSE=1 产量 /usr/bin/c++ -o CMakeFiles/trial_cpp.di
..
Visual Studio Code 找不到我的 MinGW 的 g++ 命令(顺便说一句,intelliSense 没有问题,因为我已经正确设置了 c_cpp_propertites.json).任何的想法?在此先感谢,以下是输出: 执行任务:g++ -g helloworld.cpp g++ : 术语“g++"未被识别为 cmdlet、函数、脚本文件或可运行程序的名称.检查名称的拼
..