问题标签 [gcc4.9]
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.
c - GCC compiler error, 'p_data' may be used uninitialized
New to C language, from looking at the code I cannot figure out how to initialize p_data. From what I can figure out p_data is part of a structure.
Can someone explain how to initialize p_data?
That last part is where the compiler warning is, can it because error: is after return 0; ?
c - __atomic_exchange_n 上的神秘“未使用计算值”警告
我基于 gcc 的原子内置函数开发了一个可重入函数。不幸的是,我收到关于“计算但未使用”值的神秘警告:
这是我的功能:
为什么会这样?__atomic_exchange_n
不应该计算任何东西,它只交换两个变量的内容。
c - Glibc - ucontext.h 中的错误,但仅限于 -std=c11
我有这个最小的helloworld,扩展了包括ucontext.h
:
它使用 gcc-4.9 ( gcc -c hw.c -Wall
) 在没有警告的情况下编译。
但是如果我切换到 c11 标准 ( gcc -std=c11 -c hw.c -Wall
),我会收到以下错误:
我的第一个想法是 glibc 不支持 c11。谷歌搜索并没有透露有用的信息。这是什么情况?
(我使用 glibc-2.19 和 gcc-4.9。它是一个 debian jessie,amd64。)
c++ - 了解链接器逻辑 - 隐藏符号
我试图了解链接时在 GCC 4.9.2(在 ubuntu 上)上看到的错误。
具体场景是编译支持pdfium的新版GDAL。pdfium 被构建为一个静态库。
pdfium 构建工作,但 GDAL 发生链接时间错误。看起来像:
我了解错误的含义(请参阅关于 DSO 引用隐藏符号的警告到底意味着什么?),并且我知道如何修复它 - 关闭所有地方的隐藏可见性,或将两个问题类设置为具有默认可见性(通过属性或 declspec)。
我不明白为什么要引用这些特定的类——它们没有直接在GDAL 源代码中使用。
使用 nm,根据评论,它们确实出现在 gdal.so.20.0.0 共享库中:
(U == 未定义)。这与链接器错误中的“被引用”部分一致,但并没有告诉我为什么引用它。
也许有一些内联意味着它们被使用了——但现在我在猜测,我不想这样做。特别是因为我似乎猜错了。
所以问题是是否有某种方法可以调试链接器逻辑——以某种方式找出链接器为什么要尝试解析这些符号?
gcc - brew install gcc49 on OS X 10.10(无法找到可用的 ISL)
当我尝试安装gcc49
时,我收到一个错误
但是,我确实有 ISL:
我不知道config.log
位于哪里。
c - 为什么我可以在不包含 ctype.h 的情况下进行链接
- 如果没有
#include<ctype.h>
,以下程序会输出 1 和 0。 - 使用包含,它输出 1 和 1。
我正在使用 TDM-GCC 4.9.2 64 位。我想知道isdigit
在第一种情况下的实现是什么,以及为什么它能够链接.
c++ - 链接器映射文件有时具有损坏的符号,但并非总是如此
作为构建过程的一部分,我们在编译可执行文件时会生成一个映射文件。例如:
为了尝试从 GCC 4.3/4.4 迁移到 GCC 4.9,我们设置了一个新的构建服务器。4.9 构建服务器生成的映射文件没有损坏的符号名称。由 4.3/4.4 构建服务器生成的映射文件。例如,使用 4.3 运行上面的代码,我在地图文件中得到了这个片段:
针对 4.9 运行相同的代码,我得到以下代码段:
这种变化是预期的吗?有没有办法使用 gcc 4.9(某种向后兼容选项)生成损坏的输出?我问是因为我们构建中的后续工具使用符号文件并且对解构名称感到窒息。
c++ - 如何在带有 gcc 4.8 且没有 C++11 标志的 c++ 中使用正则表达式?
我最近发现 gcc 4.8 中的正则表达式支持是不完整的,它在 gcc 4.9 中得到了真正的实现(参见Is gcc 4.8 or early buggy about regular expressions?)。
因此,想在我的 c++ 程序中使用正则表达式,我按照以下说明将我的 gcc 更新为 4.9(https://askubuntu.com/questions/466651/how-do-i-use-the-latest-gcc-4- 9-on-ubuntu-14-04)。
现在,当我尝试编译我的程序时,它说为了#include <regex>
我必须指定编译器标志-std=c++11
,我这样做了,现在我面临着以前没有的新编译问题(‘constexpr’ needed for in-class initialization of static data member
)。
鉴于此,我认为目前最好坚持使用 gcc 4.8,而不是在编译中指定 gnu++11 标志。回到方块 1。
那么,如果我不想切换到 gcc 4.9 也不想用 c++11 标记编译器,我可以在 c++ 中使用正则表达式吗?还有其他方法吗?
谢谢!
PS:实际上是 c++11 标志导致编译问题,而不是 gcc 的版本,对吧?
c++ - 如何使 GNU GCC 类似地优化 OpenMP 线程
这是我在此的头一篇博文。耶!回到问题:
我正在学习如何使用 OpenMP。我的 IDE 是 Code::Blocks。我想改进我的一些旧程序。我需要确保结果将完全相同。似乎主线程中的“for”循环与其他线程中的优化方式不同。
例子:
生产
我能否以某种方式确保所有线程都收到与我的单线程程序(未使用 OpenMP)收到的相同的优化?
编辑:
编译器是“来自 TDM-GCC(版本 4.9.2,32 位,SJLJ)的编译器和 GDB 调试器”,无论这意味着什么。这是 IDE 的“默认值”。我不熟悉编译器的差异。
提供的输出来自“Release”构建,它添加了“-O2”参数。
“-O”、“-O1”和“-O3”参数都不会产生“101”。
你可以试试我的 .exe 来自dropbox(zip 文件,还包含可能需要的 dll)。
c++ - 编译器优化打破了惰性迭代器
我用它的自定义迭代器编写了一个自定义容器。由于容器的特定特性,必须对迭代器进行惰性评估。为了这个问题,代码的相关部分是迭代器的解引用运算符,它以这种方式实现
因为迭代器本身就是一个模板,它的函数可以被编译器自由地内联。
当我在没有优化的情况下编译代码时,返回的值会按预期更新。在某些情况下,当我使用发布编译器优化(GCC 4.9 中的 -O2)时,即使 m_Current 成员被标记为可变,编译器也会优化我标记为已优化的行。因此,返回值与迭代器应该指向的值不匹配。
这是预期的行为吗?您是否知道任何可移植的方式来指定应该评估该函数的内容,即使它被标记为 const?
我希望这个问题足够详尽以至于有用。如果在这种情况下更多细节可能会有所帮助,请提出建议。
编辑:
要回答一个评论,这是从一个小型测试程序中获取的潜在用法:
除最后两行外,所有测试的测试结果都符合预期
当优化开启时,测试的最后两行会崩溃。
该系统实际上运行良好,并不比任何其他迭代器更危险。当然,如果容器在他的眼皮底下被删除,它会失败,并且通过复制使用返回的值可能更安全,而不仅仅是保留引用,但这是题外话