gcc 相关问题

GCC是GNU编译器集合。它是Linux上事实上的标准C编译器,也支持许多其他语言和平台。

条件表达式在 MSVC 和 GCC/Clang 之间产生不同的类型

此代码在 GCC 和 Clang 中有效,但在 MSVC 上无效: #包括 #包括 结构体S{}; 常量 S&& f(); S g(); static_assert(std::same_as 此代码在 GCC 和 Clang 中有效,但在 MSVC 上无效: #include <concepts> #include <utility> struct S {}; const S&& f(); S g(); static_assert(std::same_as<decltype(false ? f() : g()), const S>); https://godbolt.org/z/99rMPzecM MSVC 认为 decltype(false ? f() : g()) 是 const S&& 哪一个是正确的?为什么? MSVC 是错误的,这是一个编译器错误。要确定正确的类型,请考虑 [expr.cond] 中确定条件运算符类型的规则。 在这种情况下,f()返回一个const S&&,它将在任何分析之前变成x值。 将 S 转换为 const S&& 时,它不能是目标类型,因为根据 [expr.cond] p4.2: 仅当引用直接绑定时才能形成隐式转换序列。 另一个转换是从 f() 到 g(),即到 S 类型的纯右值。这是可能的,并且 f() 可以进行左值到右值的转换,变成 S。然后: 否则,如果可以形成恰好一个转换序列,则将该转换应用于所选操作数,并且在本子条款的其余部分中使用转换后的操作数代替原始操作数。 - [expr.cond] p4,第 7 句 具体来说,对于子条款的其余部分,f()被转换为S,并且? f() : g()应该被视为两边都是S类型,这也意味着条件表达式的类型作为整体是S.

回答 1 投票 0

表达指向 const 函数的指针

在C中,我可以像这样表达一个指向const函数的指针: typedef void fun_t(void); 常量 fun_t *fp; (我不知道fp的类型是否有任何实际用途,但它是一个真实且独特的类型;e...

回答 1 投票 0

lcov/genhtml 可以显示从未执行过的文件吗?

如何让 lcov 和 genhtml 显示未链接/加载的文件?我用它来显示测试覆盖率,我希望看到每个源文件都出现在 HTML 报告中,即使它的值为零

回答 2 投票 0

检查 Makefile 中是否存在库

有没有办法在 Makefile 中检查库(此处:librt)在系统中是否可用? 对于旧系统,librt 在库中,而不是在 glibc 中,我想测试它是否在系统中,如果...

回答 1 投票 0

有没有办法检查 gcc 和 clang 之间结构的大小或结构成员的偏移量是否不同?

我最近遇到了一个问题,使用共享内存的 IPC 在两个应用程序之间出现中断。当使用相同的编译器(gcc11 或 clang14)编译时,它们可以成功通信,...

回答 1 投票 0

mujoco:找不到 GCC 可执行文件

我想在 macOS 上运行 pip3 install -U 'mujoco-py<1.50.2,>=1.50.1' 但它返回 文件“/private/var/folders/1t/t0dzx5fn3jn1r9lqx_2j3m9m0000gn/T/pip-install-i8wi8lki/mujoco-

回答 1 投票 0

意外生成的无限循环,没有副作用[重复]

当使用gcc 8.4.3和-O2构建程序时,以下循环变成了无限一的汇编代码 for(int i=0; i < PCU_MAX; i++) { auto loc = getApp()->Loc[i + 1 + PCU_LOCAT...

回答 1 投票 0

为什么“static”说明符会为内联函数生成外部定义?

在内联说明符的 C99 标准(6.7.4 第 6 段)中指出: “如果翻译中函数的所有文件范围声明 单元包括内联函数说明符,不带 ex...

回答 1 投票 0

为什么GCC在共享对象中.init_data的虚拟内存地址前加一个空格

显然,共享对象中的 .init_array 之前总是有一个间隙。这只是一个约定吗?我找不到任何关于它的参考。 如果我的主程序加载了太多 SO,htop 将显示一个值得注意的 inc...

回答 1 投票 0

gcc 未在 wsl-2 上正确安装

我想在 WSL-2 上运行的 Ubuntu 22.04.3 LTS 上编译我的 c 程序。尽我所能,我不断收到以下错误: > myFile1.c:1:10: 致命错误: stdio.h: 没有这样的文件或目录 >...

回答 1 投票 0

是否可以将 CFLAGS 设置为 Linux 内核模块 Makefile?

例:常见设备模块的Makefile obj-m:=jc.o 默认: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$(shell pwd) 模块 干净的: $(MAKE) -C /lib/modules/$(shell uname -r)/build M=$...

回答 2 投票 0

gcc 可以找到该库,但 g++ 不能,当指定 -l 选项时

我现在正在使用 pciutils 库实现一个 Linux 应用程序。我通过命令 make PREFIX=./local install-lib, a...

回答 1 投票 0

gcc编译的可执行文件LSB是否同时意味着“最低有效字节”和“最低有效位”?

我想知道int32_t的位顺序是如何存储在内存中的,所以我写了一些代码来打印。 #包括 #包括 #包括 无效 print_i8_as_...

c gcc
回答 1 投票 0

使用 bazel 构建 Tensorflow:包括 TensorRT 标头

我正在我的 EC2 实例上编译 TensorFlow 以启用本机指令集。我对 bazel 完全陌生,并且对如何配置构建感到不知所措。 我唯一的问题...

回答 1 投票 0

gcc编译器负责存储(在可执行文件中)来自C语言char数组的utf8字符吗?

我在 Ubuntu 系统上编写了这个简单的程序: #包括 #包括 #包括 #包括 int main( 无效 ){ 字符 utf8_a...

回答 1 投票 0

带有结构成员的 C++ 联合结构适用于 Clang 和 MSVC,但不适用于 GCC

我正在尝试定义一个联合结构,其中一些结构和原始成员在内存中与一个简单的数组重叠。这在 Clang 和 MSVC 中完美运行,但不能用 GCC (G++) 编译。

回答 2 投票 0

C 中的兼容类型和结构

我有以下代码: int 主函数(无效) { 结构体 { int x; } a,b; 结构体 { int x; } C; 结构体 { int x; } *p; b = a; /* 好的 */ c = a; /* 不起作用 */ p = &a; /*

回答 5 投票 0

有没有办法通过向arm-none-eabi-gcc编译器添加调试标志来在ELF文件中添加本地符号名称?

我能够在 elf 文件中最终构建的可执行文件中查看全局符号,例如函数、全局/静态变量。我正在寻找可以添加局部变量名称的编译标志...

回答 1 投票 0

使用clang为gcc生成的.i文件生成.o文件,出现错误

代码示例非常简单。 #包括 int main() { printf("你好,世界"); } 生成 .i 文件。 gcc -E test.cpp -o test.cpp.ii 为 .i 生成 .o 文件...

回答 1 投票 0

严格 C90 代码的 GCC 选项?

我试图找到在测试严格的 C90 一致性时要使用的 gcc 标志的组合是什么。根据上一篇文章:GCC options for strictest C code?,我应该只需要一个 --std=c90。

回答 3 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.