GMP C++类接口与auto关键字的运行时问题求助
GMP C++类接口与auto关键字的运行时异常问题
本文探讨GMP C类接口中与C auto关键字相关的异常运行时行为。此前相关编译问题通过移除auto解决,但当前出现运行时问题:以下测试代码编译正常但会崩溃。
#include <iostream> #include <gmpxx.h> auto test() { return mpz_class(2) * 2; } int main() { std::cout << test() << std::endl; }
相关现象:
- 将auto替换为mpz_class,代码可正常运行;
- 省略-O3编译标志,代码虽能运行但输出随机错误值(通常因依赖未初始化数据导致)。
推测gmpxx.h中存在导致编译器生成错误代码的内容,现寻求无需弃用auto的解决方法。
系统环境
- 操作系统:Ubuntu 22.04.4 LTS
- 编译器:g++ (Ubuntu 12.3.0-1ubuntu1~22.04) 12.3.0
- 编译/链接标志:
-O3 -Wall -std=c++20 -lgmpxx -lgmp - GMP版本:6.2.1
内容的提问来源于stack exchange,提问作者HEKTO
相关产品推荐
相关产品推荐

