g++ 相关问题

g ++是GNU编译器集合(gcc)的C ++前端。

为什么我的 C++ 代码在使用 -O2 时出现错误输出?

这是我的代码。 #包括 结构节点{ 整数x; }; 节点 f(int A, int B) { 如果 (A < 0) return {0}; return {A / B + (A % B != 0)}; } Node g(int C, int D) { if (C > 0)

回答 1 投票 0

即使是单个 g++ 标志也会警告空指针取消引用吗?

我想检查是否存在 g++ 编译器标志来警告我有关空指针取消引用的信息。使用 g++ (GCC) 13.1.1 和这些编译器标志编译此代码时:-Wnull-dereference、-Wno...

回答 2 投票 0

如何在 CMake 中使用 `--start-group` 和 `--end-group`

是否可以使用 CMake 将目标的库包含在 --start-group/--end-group 中,而无需手动将参数字符串写入 target_link_options 中? 背景:我正在图书馆订购

回答 2 投票 0

显式动态库的问题

我用C++编写了一个动态库random.so,其中包含一个rand_int函数,可以生成给定范围内的数字。我隐式连接了我的库(通过包含“../shared/rand.h”)...

回答 1 投票 0

clang++ fstreams 比 g++ 慢 10 倍

问:有没有办法加快 clang++ STD 库 fstream 的速度? (有人知道为什么它比 g++ 慢得多吗?) 我正在尝试处理非常大(许多 GB)的二进制数据文件,并且感到惊讶......

回答 1 投票 0

g++ -Wuninitialized 在 std::min() 处不显示警告

我用 g++ -Wuninitialized (g++ Version 7.5.0) 编译了以下代码,但没有收到任何警告: #包括 int main() { 整数a,b; b = std::min(a, 0); } 当你...

回答 1 投票 0

链接器找不到g++编译的共享库

我有以下文件: 函数.hpp: #include“iostream” 无效函数(无效); 函数.cpp: #include“iostream” #include“funcs.hpp” 无效函数(无效) { std::cout&...

回答 1 投票 0

为什么 std::stoi 和 std::array 不能用 g++ c++11 编译?

过去几个月我一直在学习 C++ 并使用终端。我的代码使用 g++ 和 C++11 编译并运行良好,但在过去几天里它开始出现错误并且......

回答 1 投票 0

在标头中初始化大地图会导致 g++ 崩溃

我正在尝试制作一个简单的工具,需要对固定键值数据集进行一些查找,因此我尝试将所有数据惰性地扔到头文件中的哈希映射中: /** main.h */ #包括 我正在尝试制作一个简单的工具,需要对固定键值数据集进行一些查找,因此我尝试将所有数据惰性地扔到头文件中的哈希映射中: /** main.h */ #include <unordered_map> #include <cstdint> using namespace std; const unordered_map<uint64_t, const char * const> test = { {0xDEADC0DE, "Some short text less than 50 characters"}, // 46K rows of data }; 我还没有实现任何东西,但仅仅包含这个头文件就足以使编译器崩溃。 主.cpp /** main.cpp */ #include <iostream> #include "main.h" int main() { return 0; } 在 CPU 核心达到最大负载 5 分钟后,g++ (cc1plus) 耗尽了所有 32GB RAM 并崩溃。我知道大标头可能会影响编译性能,但我没想到它会耗尽资源并失败。当头文件大小只有 1.9 MB 时,它如何使用 32GB RAM?有人可以帮我解释一下我的案例中的问题吗? 我使用的版本是 g++ (GCC) 13.2.1 20230801,使用命令 /usr/bin/g++ -O3 -DNDEBUG -o CMakeFiles/main.cpp.o -c /home/foo/main.cpp 更新 我还用不同尺寸的地图做了一些实验: 元素编号 构建时间 10 00:00:01.043 100 00:00:01.187 1000 00:00:05.225 2000 00:00:10.200 5000 00:00:25.604 10000 00:00:52.208 20000 00:01:48.090 大的头文件会降低你的性能。不要欺负你的编译器! 想象一下 includeing <main.h> — 正如您所说,每个需要它的源文件中都有超过 四万六千 (46000 + 1) 个元素。这意味着您在包含它的任何地方都复制了大对象test,并且您的编译器被迫预处理标头并在包含它的任何地方进行编译。这不好!真的很糟糕!! 就像我在评论中提到的那样,这个对象test应该位于翻译单元中,应该具有静态存储持续时间并且应该具有外部链接。这样一来,它将被编译一次,直到程序终止为止,并且可以通过使用 extern 关键字引用它来在其他翻译单元中使用。 test.cpp #include <unordered_map> #include <cstdint> const std::unordered_map<uint64_t, const char* const> test { {0xDEADC0DE, "Some short text less than 50 characters"}, /* 46K rows of data */ }; main.cpp #include <iostream> #include <unordered_map> #include <cstdint> extern const std::unordered_map<uint64_t, const char* const> test; int main() { std::cout << test[0xDEADC0DE] << '\n'; return 0; }; 任何您想使用 test 的地方,只需声明它 extern 即可引用静态存储中的同一个对象。这样,你就可以避免复制test,还可以节省一些编译成本。

回答 1 投票 0

在头文件中初始化大地图会导致g++编译失败

我正在尝试制作一个简单的工具,需要对固定键值数据集进行一些查找,因此我尝试将所有数据惰性地扔到头文件中的哈希映射中: /** main.h */ #包括 我正在尝试制作一个简单的工具,需要对固定键值数据集进行一些查找,因此我尝试将所有数据惰性地扔到头文件中的哈希映射中: /** main.h */ #include <unordered_map> #include <cstdint> using namespace std; const unordered_map<uint64_t, const char * const> test = { {0xDEADC0DE, "Some short text less than 50 characters"}, // 46K rows of data }; 我还没有实现任何东西,但仅仅包含这个头文件就足以使编译器崩溃。 主.cpp /** main.cpp */ #include <iostream> #include "main.h" int main() { return 0; } 在 CPU 核心达到最大负载 5 分钟后,g++ (cc1plus) 耗尽了所有 32GB RAM 并崩溃。我知道大标头可能会影响编译性能,但我没想到它会耗尽资源并失败。当头文件大小只有 1.9 MB 时,它如何使用 32GB RAM?有人可以帮我解释一下我的案例中的问题吗? 我使用的版本是g++ (GCC) 13.2.1 20230801,使用命令/usr/bin/g++ -O3 -DNDEBUG -o CMakeFiles/main.cpp.o -c /home/foo/main.cpp 大的头文件会降低你的性能。不要欺负你的编译器! 想象一下 includeing <main.h> — 正如您所说,每个需要它的源文件中都有超过 四万六千 (46000 + 1) 个元素。这意味着您在包含它的任何地方都复制了大对象test,并且您的编译器被迫预处理标头并在包含它的任何地方进行编译。这不好!真的很糟糕!! 就像我在评论中提到的那样,这个对象test应该位于翻译单元中,应该具有静态存储持续时间并且应该具有外部链接。这样一来,它将被编译一次,直到程序终止为止,并且可以通过使用 extern 关键字引用它来在其他翻译单元中使用。 test.cpp #include <unordered_map> #include <cstdint> const std::unordered_map<uint64_t, const char* const> test { {0xDEADC0DE, "Some short text less than 50 characters"}, /* 46K rows of data */ }; main.cpp #include <iostream> #include <unordered_map> #include <cstdint> extern const std::unordered_map<uint64_t, const char* const> test; int main() { std::cout << test[0xDEADC0DE] << '\n'; return 0; }; 任何您想使用 test 的地方,只需声明它 extern 即可引用静态存储中的同一个对象。这样,你就可以避免复制test,还可以节省一些编译成本。

回答 1 投票 0

为什么我的字符串流不能与jthread一起工作?

我想将一个整数写入另一个线程中的字符串流。我尝试在 jthread 中执行此操作,但 stringstream 似乎没有得到任何东西。如果我转向使用线程,一切都会正常。哇...

回答 1 投票 0

调用不完整类型的成员函数在gcc中编译

这是一个例子: 结构测试类{ 无效 testFction() {} 静态测试类* ptr_; constexpr static auto funcPtr = +[](){ ptr_->testFinction(); }; }; TestClass* TestClass::ptr_ = 新

回答 1 投票 0

调用不完整类型的成员函数在gcc中编译,在clang和msvc中不编译

这是一个例子: 结构测试类{ 无效 testFction() {} 静态测试类* ptr_; constexpr static auto funcPtr = +[](){ ptr_->testFinction(); }; }; TestClass* TestClass::ptr_ = 新

回答 1 投票 0

g++编译时通常比gcc慢很多吗?

由于我们的大学课程,过去几个月我一直在使用纯 C 进行编码。我编写的程序非常小并且不需要资源。结果,用gcc编译有

回答 2 投票 0

/bin/ld:leetcode.c:(.text+0xfd):对“fmax”的未定义引用

我对我的代码有一些疑问。 int nums[9] = {-2,1,-3,4,-1,2,1,-5,4}; int numsSize = 9; if(numsSize == 1) 返回 nums[0]; int *dp = malloc(sizeof(int)*numsSize); dp[0] =...

c g++
回答 1 投票 0

为什么这个 C++ char 数组似乎能够容纳超过其大小的内容?

#包括 使用命名空间 std; 类型定义结构 { 查尔街道名称[5]; } 记录; int main() { 记录r; cin >> r.streetName; 计算<< r.streetName <<...

回答 7 投票 0

对 C++ chrono zoned_time 的 get_sys_time 和 get_local_time 感到困惑

我使用的是 GCC 13.2.0。我当地的时区是太平洋标准时间。我正在尝试 std::chrono::zoned_time 并对其 get_sys_time 和 get_local_time 感到困惑。 #包括 #包括 #包括...

回答 1 投票 0

ld:对我可以在 objdump 中看到的对象的未定义引用

我现在正在做一些非正统的链接,可以预见的是我遇到了一些问题。 然而,我已经完成了所有常规科目,但问题仍然存在。 我有一个 D 源文件...

回答 1 投票 0

为什么会有未使用但设置了指针的变量警告

我有以下代码: #包括 类测试{ 民众: 测试(int i){ 初始化(一); } 无效初始化(int i){ std::cout<<"i: &q...

回答 1 投票 0

C++热循环内分支预测的优化

我有计算原子间力场的性能关键代码。它由 bPBC、shifts、doBonds、doPiSigma、doPiPiI 等变量控制,用户可以打开和关闭这些变量

回答 1 投票 0

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