问题标签 [gcc]
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.
math - 为什么在 Math.h 中调用函数时出现链接错误?
尝试在 中调用函数时math.h
,出现如下链接错误
但我#include <math.h>
正在使用 gcc 并编译如下:
为什么链接器找不到 的定义sqrt
?
c++ - 是否有调试 C++ 宏的良好通用方法?
一般来说,我偶尔会有一系列嵌套的宏,它们的定义中有一些预处理器条件元素。这些调试起来会很痛苦,因为很难直接看到正在执行的实际代码。
不久前,我隐约记得找到了一个编译器 (gcc) 标志来扩展它们,但我在实践中遇到了麻烦。
c++ - GCC 使用 __stdcall 编译 dll
当我们在 Visual Studio 2008 中使用 __stdcall 编译 dll 时,dll 中的编译函数名称是。
函数名
虽然当我们使用 GCC 使用 wx-dev-cpp 编译相同的 dll 时,GCC 会附加函数具有的参数数量,所以使用 Dependency walker 的函数的名称看起来像。
FunctionName@numberOfParameters 或 == FunctionName@8
你如何告诉 GCC 编译器从 dll 中的导出符号中删除 @nn?
c - 如何模拟内存分配错误
我的 C 应用程序使用第三个库,它们自己管理内存。为了变得健壮,我的应用程序有代码来处理由于缺少可用内存而导致的库函数故障。
我想测试这段代码,为此,我需要模拟由于内存不足而导致的失败。
为此推荐什么工具?我的环境是 Linux/gcc。
linux - Linux 内核中可能/不太可能的宏是如何工作的,它们有什么好处?
我一直在研究 Linux 内核的某些部分,发现了这样的调用:
或者
我找到了它们的定义:
我知道它们是为了优化,但它们是如何工作的?使用它们可以减少多少性能/尺寸?至少在瓶颈代码中(当然是在用户空间中)是否值得麻烦(并且可能失去可移植性)。
optimization - Intel Atom 的 GCC 优化标志
我正在为 Intel Atom 处理器开发性能关键型应用程序。
这个 CPU 最好的 gcc 优化标志是什么?
gcc - 哪个 gcc 开关禁用“逗号的左操作数无效”警告?
它是更大代码库的一部分,它在 gcc 上强制执行 -Werror。此警告是在不应更改的第三方代码中生成的(我实际上知道如何修复它),但我可以禁用特定警告。这次 man gcc 让我失望了,所以请让一些 gcc 高手赐教。TIA。
macos - 有没有办法在不安装 Xcode 的情况下在 OSX 中安装 gcc?
我已经用谷歌搜索了它,似乎没有安装 Xcode(至少需要 1.5GB 空间)就无法在 OS X 上安装 gcc。我所需要的只是 gcc 而不是 Xcode 附带的其他垃圾。在这一点上,我将采用任何其他类型的 C 编译器。
我知道我可以简单地安装 Xcode,但这并不重要,因为我既没有原始安装光盘,也没有快速的互联网连接。
那么……有人有什么建议吗?
编辑:对不起,如果我不清楚,但我也需要标题。我目前正在通过 fink 安装 gcc4,它也在下载共享库。我会更新进展。
编辑 2:好的,所以我使用 fink 成功安装了 gcc。但是,它几乎没用:“错误:C 编译器无法创建可执行文件”。谷歌搜索后,我发现没有安装 Apple 的开发者工具是错误的原因。可能是因为我需要所有只能通过 Xcode 获得的库、头文件等。
c - 为什么 GCC 不优化结构?
系统要求某些原语与内存中的某些点对齐(整数到 4 的倍数的字节,短到 2 的倍数的字节等)。当然,这些可以优化为在填充中浪费最少的空间。
我的问题是为什么 GCC 不自动执行此操作?是否缺少更明显的启发式(从最大尺寸要求到最小尺寸的顺序变量)?某些代码是否依赖于其结构的物理顺序(这是个好主意)?
我只是问,因为 GCC 在很多方面都经过了超级优化,但在这方面却没有,而且我认为一定有一些相对酷的解释(我没有注意到)。
assembly - GCC 内联汇编器,混合寄存器大小 (x86)
有谁知道我怎样才能摆脱以下汇编程序警告?
代码是 x86,32 位:
如果我编译它,我会收到以下(非常有效的)警告:
我正在寻找的是一种告诉编译器/汇编器我想要访问 %0 的低 16 位子寄存器的方法。访问字节子寄存器(在本例中为 AL 和 AH)也很高兴知道。
我已经选择了“q”修饰符,所以编译器被迫使用 EAX、EBX、ECX 或 EDX。我已经确保编译器必须选择一个具有子寄存器的寄存器。
我知道我可以强制 asm 代码使用特定的寄存器(及其子寄存器),但我想将寄存器分配工作留给编译器。