g++相关内容

为什么要使用 -O2 而不是 -O3 进行编译

我们通常使用 -O2 进行编译,因为 -O3 会“触发细微的错误". 对于我们的 GCC 版本,-O3 启用了更积极的内联,这实际上会揭示否则未被注意到的错误(例如,使用来自函数的未初始化值将它们作为引用参数或数组的越界访问).在我看来,这种激进的内联还允许使用更小的函数以更具表现力的方式进行编码,并且 -funswitch-loops 有助于使变量定义在循环中更加本地化. 鉴于我们代 ..
发布时间:2022-01-23 20:56:51 其他开发

假设 if 语句中没有发生有符号溢出

为什么会出现此警告?如果我检查界限,这并不是一个真正的假设.以及如何解决? 如果 num_actions_to_skip 设置为 1,而不是 2,则错误消失. 谢谢 错误:假设 (X - c) = 0 && loc ..
发布时间:2022-01-23 20:56:29 C/C++开发

如何以与 g++ 和 Visual C++ 相同的方式为类定义 UUID 并使用 __uuidof?

注意:这是一个question-with-answer,以便记录其他人可能认为有用的技术,以便了解其他人"更好的解决方案.请随意添加批评或问题作为评论.也请随意添加其他答案.:) Visual C++ 一直有一个语言扩展 __uuidof(classname) 可以检索 UUID,一个 128 位的通用唯一标识符,前提是 UUID 已通过 __declspec 与类关联,这也是 Visual ..
发布时间:2022-01-23 20:55:59 C/C++开发

g++ O1 不等于 O0 与所有相关的优化标志

我知道标题有点混乱.让我用一点背景来澄清我的问题: 就执行时间而言,当我使用 -O1 标志与 -O0 标志进行编译时,我的程序的行为很奇怪.我知道 -O1 标志做了许多优化,例如 fauto-inc-dec -fbranch-count-reg -fcombine-stack-adjustments (根据手册页超过 40).为了弄清楚是哪些优化导致了这种行为,我计划一次删除一个标志,然后编 ..
发布时间:2022-01-23 20:55:44 C/C++开发

g++ 搜索/lib/../lib/,然后搜索/lib/

根据 g++ -print-search-dirs 我的 C++ 编译器正在许多目录中搜索库,包括... /lib/../lib/: /usr/lib/../lib/: /lib/: /usr/lib/ 天真地,/lib/../lib/ 似乎与 /lib/ 是同一目录 —lib 的父母将有一个名为 lib 的孩子,“那个人的父亲的儿子是我父亲的儿子的儿子"等等./usr/lib/ ..
发布时间:2022-01-23 20:55:22 服务器开发

用 int main(void) 编译失败;main(int argc, char *argv[]) 成功.为什么?

问题 为什么编译具有 int main(void) 主函数的程序与编译具有 int main(int argc, char *argv[]) 的程序不同 main 函数,如果程序不使用命令行传递的参数? 这个操作系统或编译器是特定的吗?我使用 mingw 和 g++ 没有得到相同的结果(这很奇怪,因为wingw 是 gcc 的一个端口). 示例 代码 #include ..
发布时间:2022-01-23 20:55:05 C/C++开发

编译 C++ 代码使系统挂起

当我尝试通过发出命令编译此文件时,“g++ qr.cpp -o qr"系统挂起.我在其他任何地方都没有看到过这种错误. #include使用命名空间标准;布尔赢[1000000001];布尔知道[1000000001];int Sixes[] = {6, 36, 216, 1296, 7776, 46656, 279936, 1679616, 10077696, 60466176, 362797 ..
发布时间:2022-01-23 20:54:50 服务器开发

gcc 中的 C++11 thread_local - 替代方案

如我所见:http://gcc.gnu.org/projects/cxx0x.html 不幸的是,gcc 还不支持 thread_local 关键字. 有没有其他选择?我不想使用 boost 库. 解决方案 gcc 编译器有一个存储类 __thread 可能足够接近. http://gcc.gnu.org/onlinedocs/gcc-3.3.1/gcc/Thread-Loca ..
发布时间:2022-01-23 20:54:44 C/C++开发

向量的编译问题<auto_ptr<>>

考虑以下代码: #include #include #include 使用命名空间标准;结构 A{诠释一个;A(int a_):a(a_) {}};主函数(){向量>作为;for (int i = 0; i >::iterator it = as.begin(); it != as.end(); ++it)cout 在尝试编译它时, ..
发布时间:2022-01-23 20:54:37 C/C++开发

覆盖静态库中定义的 C 函数

我有一个 C 文件的静态库,在 Cygwin 上用 g++ 编译.我希望对库中定义的一个函数进行单元测试.该函数调用该库中定义的另一个函数,我希望覆盖依赖项以用我自己的该函数版本替换它.我无法修改静态库中的内容,所以这个解决方案 [ Override a function call inC ] 不适用. 通常,我可以编写一个 .cpp 文件并包含包含我要进行单元测试的函数的 .c 文件,该文 ..
发布时间:2022-01-23 20:54:31 其他开发

std::vector::push_back 一个不可复制的对象给出编译器错误

我在 g++ (GCC) 4.7.2 上遇到编译错误,但在尝试 std::vector::push_back 时却没有代码> 不可复制(私有复制构造函数)但可移动的对象.对我来说,我的示例看起来与 SO 和其他地方的许多其他示例相同.错误消息使它看起来像结构不是“直接可构造"的问题 - 我不知道这意味着什么,所以我非常不确定为什么对象需要“直接构造"才能被推回. #include ..
发布时间:2022-01-23 20:54:16 C/C++开发

Unix - “xargs"- 输出“在中间";(不是最后!)

xargs 应用程序在 Unix 中的使用示例如下: ls |xargs 回声 这与(假设我在工作目录中有 someFile 和 someDir/ 相同): echo someFile someDir 所以 xargs 获取它的输入并将其放在下一个命令的末尾(这里是 echo 的末尾). 但有时我希望 xargs 将其输入放置在下一个命令的中间位置. 例如: 找到 .-typ ..
发布时间:2022-01-23 20:54:10 服务器开发

哪个 gcc 和 g++ 版本支持 c 和 c++ 的哪个标准?

例如,哪个gcc版本支持c99? 是否有任何表格或图表显示 gcc 和 g++ 的标准支持状态? gcc 和 g++ 是如何演变的? 谢谢~ 解决方案 非常严格地说,GCC 从 4.3 开始肯定只支持 C89、C++98 和 C++03. 到目前为止,对 C99 的支持仍然不完整,但 GCC 长期以来一直支持一个非常大且可用的子集. 实验性的 C++11 支持 ..
发布时间:2022-01-23 20:54:03 C/C++开发

等于在 C++ 中返回 false

我对 cpp 还很陌生,我正在尝试做一个项目.它说代码必须以文件名作为参数,并将由以下人员运行: ./main -i 文件名 我编写了一个 for 循环,它将遍历参数列表以找到“-i"参数,以便确定文件名.但是这一行总是返回 false: argv[i] == "-i" 下面是我的代码: #include #include int main(int a ..
发布时间:2022-01-23 20:53:52 C/C++开发

将 C 编译的静态库链接到 C++ 程序

我试图将一个静态库(用 gcc 编译)链接到一个 c++ 程序,但我得到了“未定义的引用".我在 ubuntu 12.04 服务器机器上使用了 gcc 和 g++ 版本 4.6.3.例如,下面是阶乘法的简单库文件: mylib.h #ifndef __MYLIB_H_#define __MYLIB_H_整数阶乘(整数 n);#万一 mylib.c #include "mylib.h"整 ..
发布时间:2022-01-23 20:53:43 服务器开发