编译C++代码时遇operator*操作数无效错误,无法生成main.exe
编译错误解决方法
错误原因
你定义的全局变量long double time;和C标准库的time()函数重名了。编译器把你的变量识别成了标准库的time()函数(类型为time_t(time_t*),也就是long long int(long long int*)),而函数无法和int类型的数值执行乘法操作,所以触发报错。修改变量类型(从double改long double)解决不了问题,因为核心是命名冲突。
解决办法
方法1:重命名全局变量(推荐)
把全局变量名改成和标准库不冲突的名字,比如:
// 原代码 long double time; // 修改后 long double timestamp;
同时把代码中所有用到这个变量的地方(比如time * 数值)替换成新的变量名,比如timestamp * 数值。
方法2:使用命名空间隔离(备选)
如果不想修改变量名,可以把变量放到自定义命名空间中:
namespace my_vars { long double time; }
然后在乘法逻辑中使用命名空间限定:
my_vars::time * 数值;
完成修改后,重新执行编译命令:
g++ main.cpp -o main.exe
就能在main.cpp所在目录生成main.exe文件。
内容的提问来源于stack exchange,提问作者Syafa Hadyan Rasendriya
相关产品推荐
相关产品推荐

