C ++是一种通用编程语言。它最初被设计为C的扩展,并保持类似的语法,但现在是一种完全不同的语言。使用此标记来查询有关使用C ++编译器编译的代码的问题。对特定标准版本[C ++ 11],[C ++ 17]等相关问题使用版本特定标记。
这段代码应该停在 15 个字符(行)处,但事实并非如此,它会无限地继续下去。这段代码的主要问题是条件变量逻辑不允许所有线程识别...
假设我有一个 C++ 程序,我想从其中的 C 对象文件调用函数。限制是我不允许对 C 源文件进行任何更改。 在这种情况下,我会包括...
我已经获得了GLUT 3.7源码并打开了MSVC项目。我在项目设置中将DLL切换为静态lib并得到了一个lib。然后我在我的应用程序中链接到它,并添加了 GLUT_STA...
有没有办法让msvc编译器像gcc一样严格? MSVC 让我可以做一些非常疯狂的事情,当我在 Linux 中编译时,这些事情会导致数百个错误。
每当我更改 down_range 变量时,投影图像都不会改变。所有投影点在投影时都具有相同的 Y 值,并且尽管更改每个变量 (x...
随着 C++ 的最新发展,我们是否有一些通用的多维数组解决方案,其大小仅在运行时已知并且在执行过程中不会改变? 我只找到了优雅的
作为练习,我正在用 C++ 围绕 GLFW 和 OpenGL 编写一个简单的包装器。我有两个类:Window 和 Renderer,其中 Window 拥有 Renderer 的一个实例。 Window 类设置 GLFW con...
我正在寻找一个 RPC 库,它允许我调用另一个进程(在 Windows 上)中的对象的成员函数。 我当前遇到的问题是一些服务器端对象...
我正在尝试在我的 Linux PC 上编译并运行 VTK 示例。 所有 C++ 示例的主窗口显示随机垃圾而不是形状和背景。 我的配置是: Linux 内核版本:...
尝试构建使用内存清理程序检测的 libcxx 时出现 llvm 错误
我正在尝试解决 MemorySanitizer 问题@https://github.com/google/sanitizers/wiki/MemorySanitizerLibcxxHowTo。我跑: cmake -GNinja ../llvm \ -DCMAKE_BUILD_TYPE=发布\ -DLLVM_ENABLE_PROJ...
我偶然发现了一个失败的单元测试,其中涉及将双精度数转换为整数。 实际转换的数字是 1.234 * 1000.,代码基本上可以归结为: #包括 我偶然发现了一个失败的单元测试,其中涉及将双精度数转换为整数。 实际转换的数字是1.234 * 1000.,代码基本上可以归结为: #include <stdio.h> #include <stdint.h> int64_t deltatime(double numSeconds) { return (int64_t) (numSeconds * 1000.0); } int main() { double s = 1.234; int64_t ms = deltatime(s); printf("%fs -> %dms\n", s, ms); return 0; } 现在为 x86-64 编译这个,给我: $ gcc test.c && ./test 1.234000s -> 1234ms 针对 x86-32 编译它,给我: $ gcc -m32 test.c && ./test 1.234000s -> 1233ms (这是与 $ gcc --version gcc (Debian 14.2.0-7) 14.2.0 ) 现在,我明白数字 1.234 无法在 IEEE-754 中准确表示, 例如在单精度浮点数中,它确实是 1.2339999675750732421875,同样,在双精度浮点数中,它是 1.2339999999999999857891452848。 现在,将实际值乘以1000.0(可以精确表示),应该总是给我1233.9999...,并将其转换为int64_t实际上会是1233(而不是天真的预期的1234) . 但是为什么我在 x86-64 上得到 1234(没有为编译器指定任何舍入选项)? 正确的解决方案是否只是将 0.5 添加到总和中(before 转换为 int64_t)? int64_t deltatime(double numSeconds) { return (int64_t) (numSeconds * 1000.0 + 0.5); } 从 C++11 开始,您可以 #include <cmath> 并使用 std::llround()。
我偶然发现了一个失败的单元测试,其中涉及将双精度数转换为整数。 实际转换的数字是 1.234 * 1000.,代码基本上可以归结为: #包括 我偶然发现了一个失败的单元测试,其中涉及将双精度数转换为整数。 实际转换的数字是1.234 * 1000.,代码基本上可以归结为: #include <stdio.h> #include <stdint.h> int64_t deltatime(double numSeconds) { return (int64_t) (numSeconds * 1000.0); } int main() { double s = 1.234; int64_t ms = deltatime(s); printf("%fs -> %dms\n", s, ms); return 0; } 现在为 x86-64 编译这个,给我: $ gcc test.c && ./test 1.234000s -> 1234ms 针对 x86-32 编译它,给我: $ gcc -m32 test.c && ./test 1.234000s -> 1233ms (这是与 $ gcc --version gcc (Debian 14.2.0-7) 14.2.0 ) 现在,我明白数字1.234无法在IEEE-754中精确表示, 例如在单精度浮点数中,它确实是 1.2339999675750732421875,同样,在双精度浮点数中,它是 1.2339999999999999857891452848。 现在,将实际值乘以1000.0(可以精确表示),应该总是给我1233.9999...,并将其转换为int64_t实际上会是1233(而不是天真的预期的1234) . 但是为什么我在 x86-64 上得到 1234(没有为编译器指定任何舍入选项)? 正确的解决方案是否只是将 0.5 添加到总和中(before 转换为 int64_t)? int64_t deltatime(double numSeconds) { return (int64_t) (numSeconds * 1000.0 + 0.5); } 自 C++11 起,您可以 #include <cmath> 并使用 std::llround()。
B类; A级 { 私人的: 列表我的列表; unique_ptr smartUniq; 民众: 一个() { myList.push_back(new B(5)); myList.push_back(new B(6)); 我的列表。
是否将“指向结构体的指针的地址”转换为“第一个成员是指向结构体的指针的结构体的地址”UB?
我有一个名为 Node 的结构,其第一个成员是 Node* p_next 我有一个指向第一个节点的指针,名为 p_head 我想将 Node** 类型的 &p_head 转换为 Node*,并将其存储在
我将 bool 打包在一个 C++ 结构中,我想在构造时将它们全部初始化为零。 这是正确/安全的方法吗? 我想是的,但我不是 100% 确定,我想要律师......
以下代码在GCC中生成RET指令(https://godbolt.org/z/Yz7fE4xK7) 无效 f( ) { std::array a; std::array b; std::copy_n(a.begin( ), 0, b....
我正在使用 Eigen 进行线性代数运算,用 C++ 实现神经网络。在 DenseLayer::forward 函数中,我在尝试添加偏差向量时遇到维度不匹配问题...
这个问题的后续问题,其中单个参数的使用没有解决。 假设以下 C++ 概念: 模板 概念 has_set = require(T t, std::string s) { { t...
所以,我写了一些代码: #包括 #包括 int main() { 整数a,b,n; std::cin >> a >> b >> n; 双 xi[n]; 双义[n]; 双...
我有一个表,其中的结构包含多边形结构,每个表都包含一个包含约 100 个复数的表。 initPoly1(T[0]); ... initPoly4(T[3]); 我正在做的是对每个点进行插值...