gcc 相关问题

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

C 标准有定义调用转换吗?

dos C 标准定义了调用转换吗?我发现调用转换 cdecl 代表 C 声明,但我在 C 标准草案中找不到任何有关它的信息。

回答 1 投票 0

重新编译未更新的“Hello, world”

我正在尝试在Windows上使用make命令(通过choco安装)。尝试使用 hello.c 运行简单的示例,其中仅包含“Hello, world”的打印。如果我跑步只是打个招呼,我会面对...

回答 1 投票 0

在标准C中,是表达式“i = (i = 1) + 1;”定义清楚吗?

在标准C中,是表达式i = (i = 1) + 1;定义明确吗? 它和 i = ++i + 1; 有什么区别?从顺序点来看? 有人告诉我有一个序列点...

回答 1 投票 0

在标准C中,是表达式“i = (i = 1) + 1;”指定?

在标准C中,是表达式i = (i = 1) + 1;指定的? 它和 i = ++i + 1; 有什么区别?从顺序点来看? 有人告诉我之后有一个序列点...

回答 1 投票 0

如何在 Bazel 中禁用 C/C++ `-Werror` 构建错误? (又名:如何关闭已由“-Wall -Werror”打开的特定警告)

我在构建时遇到以下错误: ...具有未定义的行为 [-Werror,-Wundefined-reinterpret-cast] Bazel 构建完全停止,因为这个 clang (llvm 编译器) -Wundefine-reint...

回答 2 投票 0

C 中的 typeof 运算符

C 中的 typeof 真的是一个运算符吗? 我在想,因为 C 中没有多态性,所以在运行时没有什么可做的。也就是说,typeof 的答案在编译时就已知。 (我不能...

回答 5 投票 0

有选择地仅对部分翻译单元禁用 GCC 警告

与此 MSVC 预处理器代码最接近的 GCC 等效项是什么? #pragma warning( Push ) // 保存当前警告状态。 #pragma warning(禁用:4723)//C4723:

回答 4 投票 0

MAKEFILE:使用递归子文件夹搜索中的源文件时出现“没有规则来创建目标...”错误

我正在尝试构建一个makefile来在linux下编译一个在windows上使用Code::Blocks编写的程序(所以,我没有可用的makefile来查看)。 项目很大,源文件多种多样

回答 1 投票 0

如何确定 Linux 上的最大静态 TLS(线程本地存储)块大小?

问题 尝试运行这段代码 if (!dlopen("../lib/libMy.so", RTLD_NOW)) { perror("dlopen 失败!"); 返回1; } 导致此 TLS(线程本地存储)错误: ca...

回答 1 投票 0

C++ 程序中输出编译器版本

我正在编写一个程序,在编译代码时需要编译器版本的信息。 为了简化问题,我的代码是这样的 #包括 #包括 我正在编写一个程序,在编译代码时需要编译器版本信息。 为了简化问题,我的代码是这样的 #include <cstdlib> #include <iostream> using namespace std; int main(int argc, char** argv) { cout<<"The C++ compiler version is: "<<__STDC_VERSION__<<endl; return 0; } 我期望一旦它被编译并运行,它会输出: C++编译器版本是:gcc 5.3.0 我尝试编译它,但出现错误: $ g++ main.cpp main.cpp: In function ‘int main(int, char**)’: main.cpp:24:11: error: ‘__STDC_VERSION__’ was not declared in this scope cout<<__STDC_VERSION__<<endl; ^ 如何正确获取代码中的编译器版本? 我曾经使用过这样的代码: std::string true_cxx = #ifdef __clang__ "clang++"; #else "g++"; #endif std::string true_cxx_ver = #ifdef __clang__ ver_string(__clang_major__, __clang_minor__, __clang_patchlevel__); #else ver_string(__GNUC__, __GNUC_MINOR__, __GNUC_PATCHLEVEL__); #endif 其中 ver_string 的定义为: std::string ver_string(int a, int b, int c) { std::ostringstream ss; ss << a << '.' << b << '.' << c; return ss.str(); } 还有另一个有用的宏(在 gcc 和 clang 上): __VERSION__ 该宏扩展为一个字符串常量,描述正在使用的编译器的版本。您不应依赖其具有任何特定形式的内容,但可以认为它至少包含版本号。 请参阅 gcc 在线文档。 如果您需要处理 MSVC 和其他可能性,您将必须检查它们使用的宏,我不记得它们。 如果由于某种原因我们在项目中使用Boost库,我们可以使用#include <boost/config.hpp>中定义的宏。 以下代码: std::string get_compile_version() { char buffer[sizeof(BOOST_PLATFORM) + sizeof(BOOST_COMPILER) +sizeof(__DATE__ )+ 5]; sprintf(buffer, "[%s/%s](%s)", BOOST_PLATFORM, BOOST_COMPILER, __DATE__); std::string compileinfo(buffer); return compileinfo; } to std::cout 在我的机器上打印以下内容: [Win32/Microsoft Visual C++ version 14.1](May 10 2019) 其他相关宏列于here。 __STDC_VERSION__是C标准库的版本。它不是 C++ 的一部分,也不是编译器的版本。 来自 GCC 的文档: 如果使用 -traditional-cpp 选项,则不会定义该宏,也不会 编译 C++ 或 Objective-C 时。 它的等价物是__cplusplus,它会告诉你编译器使用的C++标准版本。 编译器版本宏是特定于供应商的,对于 GCC,它们是 __GNUC__、__GNUC_MINOR__ 和 __GNUC_PATCHLEVEL__ 对于 MSVC 以下代码: #ifdef _MSC_VER std::to_string(_MSC_VER) #endif 可以用。 这个问题有特定于编译器的版本: 如何检测我是否正在使用特定的 Visual Studio 版本编译代码? C++ 程序中输出编译器版本 如何通过#define指令检测LLVM及其版本? 将它们放在一起,我们可以创建一个更便携的版本: #include <cstdio> #if defined(__GNUC__) #if defined(__clang__) #define COMPILER_FMT "Clang: %s" #else #define COMPILER_FMT "GNUC: %s" #endif #define COMPILER_VERSION __VERSION__ #elif defined(_MSC_VER) #define COMPILER_FMT "MSVC: %d" #define COMPILER_VERSION _MSC_FULL_VER #else #error Please add your compiler here. #endif int main() { printf("Built with " COMPILER_FMT "\n", COMPILER_VERSION); printf("C++ version: %ld\n", __cplusplus); } 叮当: 使用 Clang 构建:4.2.1 兼容 Clang 7.0.1 (Fedora 7.0.1-6.fc29) C++版本:201402 海湾合作委员会: 使用 GNUC 构建:8.3.1 20190223(红帽 8.3.1-2) C++版本:201402 我本地的 Visual Studio: 使用 MSVC 构建:190024234 C++版本:199711

回答 5 投票 0

使用 ARM GCC 时,什么是“nosys”、“nano”、“rdimon”术语?

我正在学习使用 GCC 工具链编写 ARM 代码。我遇到了一些 GCC 选项,但找不到相关文档。他们在做什么? -specs=nosys.specs -specs=nano.specs -规格=rdimon.s...

回答 1 投票 0

/usr/local/go/pkg/tool/linux_amd64/link:运行gcc失败:在centos上退出状态1

[nobin@CentOS9 tc-dump]$ CGO_ENABLED=1 开始构建 # github.com/Asphaltt/tc-dump /usr/local/go/pkg/tool/linux_amd64/link:运行 gcc 失败:退出状态 1 /usr/bin/ld: 找不到 -lresolv /usr/bin/ld:

回答 1 投票 0

GCC 不会警告隐式指针到整数转换

背景 我正在编写使用 ctype.h 中的函数来识别字符串中的内容的代码。我不小心将字符串(char*)传递给了采用int类型的函数,导致程序......

c gcc
回答 2 投票 0

std::basic_istream::ignore 如果设置了 delim MSB 则会挂起

给出以下片段: #包括 #包括 int main() { std::stringstream str; str.put('a'); str.put('\x80'); str.put('a'); str.ignore(32, '\x80');...

回答 1 投票 0

如何在 Kotlin/Native 项目中使用较新的链接器和 glibc?

我想在我的 Kotlin/Native 项目中使用 GLFW,因此我在 src/nativeInterop/cinterop/glfw3.def 创建了一个 .def 文件: 标题 = \ glfw3.h \ glfw3native.h 标头过滤器 = /usr/include/GLFW/*

回答 1 投票 0

动态类型重新分配的方法?

我最近一直在思考如何在擦除后将类型重新分配给指针(被转换为空指针)。这是我今天早些时候想到的一个方法: #包括 //代表...

回答 1 投票 0

创建 ELF 而不是 a.out

我需要使用 gcc 生成一个简单的“Hello World”ELF32 可执行文件。 不过我似乎没有 gcc-elf 命令。 是否可以在不构建 gcc ag 的情况下创建 ELF 二进制文件而不是 a.out...

回答 2 投票 0

GCC“添加符号时出错:文件格式错误collect2:错误:ld返回1退出状态”在制作C时

本科海湾合作委员会新手在这里。我正在 Ubuntu 22.04.2 ARM64 上编写一个简单的 C 程序。 C 程序是预先编写好的并提供给我使用 GDB 进行调试,因此程序本身应该是“

回答 1 投票 0

SYSV 与 Linux/GNU ELF 格式

问题是在以下问题的上下文中:为什么找不到库,即使它们显然位于 -L 路径上? 。看来我的库和我的目标文件有不同的......

回答 1 投票 0

在没有明确导出指令的情况下构建共享库时,GCC 如何决定导出哪些函数?

我试图了解 GCC 在构建共享库(.so 或 .dll)时如何决定导出哪些函数,而无需提供任何显式导出指令(例如 .def 文件或 __attribute__((

回答 1 投票 0

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