问题标签 [g++4.8]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
1066 浏览

gcc - gcc 编译器标志 `-pass-exit-codes` 生成的退出代码是否有适当的文档?

在回答这个问题Unexpected exit status when using -pass-exit-codes in g++时,我意识到编译器指令的文档-pass-exit-codes非常晦涩:

-pass-exit-codes 通常,如果编译器的任何阶段返回不成功的返回码,gcc 程序就会以 1 的代码退出。如果您指定 -pass-exit-codes,则 gcc 程序将返回任何返回错误指示的阶段产生的数值最高的错误。如果遇到内部编译器错误,C、C++ 和 Fortran 前端将返回 4。

这导致了“其他可能的错误代码是什么?”的问题。如果还有其他可能的错误代码,它们可能对程序员很有价值,因此他可以将它们用于编译自动化。

在遵循在 gcc 4.8.2 中定义和返回退出值的方式之后(https://ftp.gnu.org/gnu/gcc/gcc-4.8.2/gcc-4.8.2.tar.bz2 ),看起来唯一可能的退出代码是0( SUCCESS_EXIT_CODE)、1( FATAL_EXIT_CODE) 和4( ICE_EXIT_CODE)。

现在,在 gcc 开发的问题跟踪系统(https://gcc.gnu.org/bugzilla/show_bug.cgi?id=22600#c4)中,我们可以看到初始补丁3被任意建议作为 ICE- 的返回值相关的退出代码。然后有人建议使用2,除非2已经使用了其他错误代码,并且它最终被分配4给没有额外评论为什么4选择。是否有错误代码 3 和 4?它们是干什么用的?

因为知道其他退出代码可能对使用 gcc/g++ 的程序员有益。是否有详细记录的 gcc 可能退出代码列表?如果没有,gcc 团队可能应该考虑将其添加到文档中。

0 投票
3 回答
40253 浏览

c++ - 如何检查我的 gcc 的版本?

以上是我的构建日志中的第一个错误。

我没有尝试自己编译 glibc/gcc,而是通过 yum 安装的。

我发现的一件可疑的事情是:

yum 只显示了 1 个版本的 gcc:

知道如何验证 /usr/include/c++/4.8.2 中的标头确实来自 4.8.5 包吗?

提前致谢。

PS我认为glibc可能无关紧要,但这里是信息:

0 投票
0 回答
96 浏览

c++ - 如何在 GCC 中强制使用“std::”命名空间?

例如,当使用“g++”编译一些代码时,我可以使用像“int32_t”这样的类型(而不是“std::int32_t”)或像“memcpy(...)”这样的函数(而不是“std:: memcpy(...)")。

有没有办法让编译器强制使用命名空间(或“使用命名空间”语句)?

非常感谢你的回答。

0 投票
1 回答
588 浏览

g++ - 如何用 DevIL 编译?

我正在尝试为 3D 程序设置正确的设置,下一步是纹理加载器。我正在尝试使用 DevIL,但我似乎无法让它工作,而且似乎没有任何解释性文字是最新的。

首先,我将包含我的项目的转储:(请记住,它恰好处于这种状态,并非全部相关;另请注意,'IOUtil.cpp' 只定义了'Print',打印到“cout”。它似乎不相关,所以我排除了它。)

项目结构:

主程序:

构建.bat:

这是批处理文件第一行的日志:

很抱歉只是倾倒了所有东西,但我不知道还能做什么。我不明白为什么 IL 包含会导致语法正确代码中的语法错误。

有谁知道出了什么问题?

0 投票
2 回答
207 浏览

c++ - 在隐式类型转换期间最多可以隐式应用多少个用户定义的转换运算符?

根据 N3337 工作草案(与已发布的 ISOC++11 标准最相似的草案),答案最多是一个。

N3337

最多一个用户定义的转换(构造函数或转换函数)被隐式应用于单个值。

但是根据使用gcc (Ubuntu 4.8.4-2ubuntu1~14.04) 4.8.4编译main.cpp并使用Ubuntu 14.04.3 LTS中引用的语句运行a.out的结果,答案最多不是一个。

主.cpp

从终端编译和运行:

结果(输出):

我是否误解了某些东西,或者 N3337 是否错误,或者 gcc 是否包含错误?

0 投票
0 回答
206 浏览

c++ - 带/不带 -O2 的 g++ 编译器

我有以下由 g++ 4.8.2 编译的源代码:

布局.h:

测试x.cpp:

testy.exe(编译时没有 -O2)运行将看到“**********”每秒 2 次,

testx.exe(用-O2编译)运行会看到“***********”不太容易。

我有这个测试是因为在我的原始源代码中,如果使用 -O2 编译,有时像 getDBInfo 这样的调用函数会陷入无限循环,如果没有 -O2 会很好,所以我很好奇编译器在 getDBInfo 函数中做了什么,我应该怎么做照着做。

0 投票
2 回答
151 浏览

c++ - 模板代码中的统一初始化

0 投票
0 回答
141 浏览

c++ - 移动到其他文件夹后,可执行文件不会运行

我有一个现有的 c++ 程序,我在 Ubuntu 14.04 中使用g++-4.8. 通过传递一个文件在终端上运行这个程序,该文件在控制台中打印处理过的数据:

该程序存储在~/Documents/module2. 我创建了一个新目录~/Documents/module3并将两个文件my_program.cpp.exedata.in, 复制到此文件夹,现在当我运行它时,它不会将任何输出打印到控制台。

我不确定这是 c++ 问题还是 Linux/Ubuntu 问题,所以我在这里问。我觉得可能是其中一个,也可能是他们。

当我列出他们显示的文件时:

但是当我列出文件夹时,它们会显示为:

我不确定权限之后的 2 是否有意义。

从我正在使用的文件中获取信息:

没有,所以除了运行程序的同一个目录之外没有硬编码的链接。之后我所做的只是基本的数学运算并打印到标准输出:

我用原始文件“区分”了两个文件(data.in 和 my_program.cpp.exe),它们是相同的。

谢谢你的帮助!

0 投票
1 回答
180 浏览

c++ - c_str() 的生命周期在 g++ 4.8.4 和 g++ 5.3.1 之间是否发生了变化?

我从一个守护进程启动进程,它确保所述进程连续运行并以正确的顺序启动,等等。

在某些时候,我想开始这个过程,execv()所以我为参数准备了一个字符串数组,如下所示:

在大多数情况下,我有大约 10 个这样的论点。

现在,execv()只访问一个裸指针数组。因此,我执行以下操作来创建此类指针的数组:

然后我可以execv()用最后一个数组调用:

这在带有 g++ 4.8.4 的 Ubuntu 14.04 中运行良好,但不知何故,c_str()当我尝试运行使用 g++ 5.3.1 编译的相同代码时,指针会失效。

据我了解,这不应该是因为我没有修改创建裸指针数组的第一个循环和execv()调用之间的字符串。

参考资料说:

从 c_str() 获得的指针可能会通过以下方式失效:

  • 将对字符串的非常量引用传递给任何标准库函数,或
  • 在字符串上调用非常量成员函数,不包括 operator[]、at()、front()、back()、begin()、rbegin()、end() 和 rend()。

PS我已经有一个修复,我现在做了一个stdup()c_str()它工作得很好。如果可能的话,只有我希望避免额外的字符串副本......

0 投票
5 回答
99 浏览

c++ - 为什么编译器打印的值为0?如何在编码中实现这个逻辑?

输入 :

输出 :

编译器:g++ 4.8.4

我不知道为什么编译器打印该值是 0。我现在必须做什么才能获得预期的输出?

打印输出的正确代码是什么?