g ++是GNU编译器集合(gcc)的C ++前端。
C++17:g++ 版本 8.5 似乎无法正确生成无符号 64 位伪随机整数
我正在使用以下g++版本在Rocky Linux环境中编译C++程序: gcc 版本 8.5.0 20210514(红帽 8.5.0-3)(GCC) 我按如下方式调用 g++: g++ -std=c++17 -Wall -Wpedan...
我正在尝试编译一个使用模板化 Bag 类的小程序。其组织方式如下: //主.cpp #包括 #包括 #include“bag.h” 在...
当我使用以下内容时: 导入标准核心; 我收到错误: 错误 C1011 无法找到标准模块接口。您是否在 VS 安装程序中安装了 C++ 模块功能的库部分? 我切...
g++ 在 std::vector 的简单副本上出现错误 stringop-overflow
如果我使用任何 -O 标志,以下简单的 C++ 代码将无法使用 g++ 进行编译。我不明白为什么。 最小且可重现的示例: #包括 使用 A = std::vector; ...
我的C++文件中的这个函数正在与antlr交互: antlr4::tree::ParseTree* getTree(std::string caDefinition){ antlr4::ANTLRInputStream 输入(caDefinition); CAsyntaxLexer 词法分析器(&input); 一个...
我有一个带有多个for循环的C++程序;每个运行大约 500 万次迭代。是否有任何命令可以与 g++ 一起使用来使用多核生成生成的 .exe? IE。做第一个...
我正在尝试在 C 代码中调用 C++ 库(在 Bessel 函数上)。但是,我不确定如何将 cmath 包含到 math.h 中。大多数示例都是关于如何将 C 代码包含到 C++ 中,但我正在尝试...
编译整个源代码后,在链接时出现此错误: /x86_64-pc-linux-gnu/bin/ld:Flex 扫描仪读取失败 有什么指示可能出问题以及在哪里寻找它吗?
g++ -Wl,-rpath,/usr/local/lib -o /path-to/executable {.o 文件列表} -L/usr/X11R6/lib -L/usr/local/lib -lQtGui - L/usr/local/lib -L/usr/openwin/lib -lSM -lICE -lXext -lX11 -lresolv -lsocket -lnsl -
#包括 #define DOUBLE1(x) x + x #define DOUBLE2(x) 2 * x int main() { 整数a=2; std::cout << DOUBLE2(a++) << " " << DOUBLE1(++a) << std...
这个问题基于这两个 stackoverflow 帖子: 头文件中的多个定义 命名空间函数的多重定义 问题是:为什么多重定义不会出错
clang 和 g++ 在链接共享库(其中存在已在本地对象文件中定义的符号)方面的区别
我在处理最近开始从事的 C++ 项目时遇到了一个问题。该项目的组织如下(我无法更改): 代码的核心部分位于中央,
在 const 引用中使用静态 constexpr 变量时是否有可能产生错误?
我的头文件库需要在 C++14 (g++) 中定义浮点常量。该库包含以下语句: struct A // 带常量的 POD { 静态 constexpr float a{0.1f}; // 更多内容...
这是我的示例代码: #包括 模板 结构体S{ //#1 // 模板 > // 运算符 S 这是我的示例代码: #include <type_traits> template <bool B> struct S { // #1 // template <bool C = B, class = std::enable_if_t<!C>> // operator S<true>() const { return {}; } // #2 // operator S<true>() const { return {}; } }; int main() { S<true> b1; S<false> b2; } 使用 g++ 编译时(https://godbolt.org/z/P46qE8EGG),无论启用选项 #1、选项 #2 还是两者都启用,我都不会收到警告。当我启用 #2 时,我希望收到一个警告,指出它是一个自转换函数,但也许 g++ 没有这样的警告。 真正的问题是用 clang 编译时。仅当我启用 #1 时,我才会收到以下警告: 错误:将“S”转换为自身的转换函数将永远不会被使用[-Werror,-Wclass-conversion] 启用 #2 不会触发此警告,禁用 b1 或 b2 的实例化也不会阻止此警告。到底是怎么回事?这是 clang 的错误吗? 编辑:我特别指的是为什么#1产生警告。其他信息旨在展示我尝试将问题缩小到更小的工作示例 当我启用 #2 时,我希望收到一个警告,表明它是一个自转换函数,但也许 g++ 没有这样的警告。 正确,人们可以期待编译器警告(非标准最佳实践),但不能保证某个编译器会提供它们。 启用 #2 不会触发此警告,禁用 b1 或 b2 的实例化也不会阻止此警告。到底是怎么回事?这是 clang 的错误吗? Clang 不警告 #2 是正确的,因为它可能会被调用,在删除定义的示例中更容易显示: template <bool B> struct S { // #2 operator S<true>() const = delete; }; int main() { S<false> const b1; S<true> b2 = b1; // error: call to a deleted function } 为什么?由于隐式复制构造函数复制 S<true> -> S<true> S<false> -> S<false> 然而 S<false> 到 S<true> 并不是相同意义上的复制操作。 当“copy from”类为S<false>时,模板构造函数也存在,因此Clang确实不正确警告该函数永远不会被使用: #include <type_traits> template <bool B> struct S { // #1 template <bool C = B, class = std::enable_if_t<!C>> operator S<true>() const = delete; }; int main() { S<false> const b1; S<true> b2 = b1; // error: delete function }
gcc/g++ 有没有办法从命令行转储其默认预处理器定义? 我指的是 __GNUC__、__STDC__ 等。
我正在编译一些具有依赖关系的项目,因此我不必每次都重新编译,但是当我将 -Dsome_flags 添加到 CFLAGS 时,它不会重新编译。 出发地:$(CPPS) $(CC) $(CFLAGS) $(INC) -...
Windows Visual Studio 中的字符串函数在 Ubuntu(Linux Mint) 上通过 g++ 编译时似乎不起作用
我正在通过 Visual Studio(Windows)为我的班级做一个项目,因为我更喜欢编译器,但是当我将代码复制/粘贴到 ubuntu linux(linux mint cinnamon)并运行 g++ 时
使用 make install 构建和安装 C++ 项目的二进制文件时,出现以下错误: > 编译算法/fba2-inst6.cpp [qkd_commsys_simulator-omp-mpi-gmp: 发布] > 在...
为什么 gdb 在查询分配给包含控制字符的 char 数组的字符串时会转义字符?
我注意到,当将 std::string_view (或 std::string)分配给包含控制字符(例如 ' ' [标题开始])的字符数组时,gdb 将用
当分配的 char 数组包含控制字符时,为什么 std::string_view (和 std::string)会转义八进制字符?
我注意到,当将 std::string_view (或 std::string)分配给包含控制字符(例如 ' ' [标题开始])的字符数组时,该 string_view 将进行八进制转义