C++ “错误”;“表达式结果未使用”;在c++;

C++ “错误”;“表达式结果未使用”;在c++;,c++,debugging,syntax-error,c++14,clion,C++,Debugging,Syntax Error,C++14,Clion,我有一些代码,比如: double calculate_self_term(double area) { double corr = 2.0 * sqrtpi / sqrt(area); return calculate_reciprocal(0, 0, 0) + self_energy + corr; } 其中,自我能量在开头定义: #定义自我能量-2.0*alpha/sqrtpi 然后我得到一个错误: 对于变量corr,表达式结果未使用 删除宏中的分号 #defin

我有一些代码,比如:

double calculate_self_term(double area)     {
    double corr = 2.0 * sqrtpi / sqrt(area);
    return calculate_reciprocal(0, 0, 0) + self_energy + corr;
}
其中,
自我能量
在开头定义:

#定义自我能量-2.0*alpha/sqrtpi

然后我得到一个错误:
对于变量
corr
,表达式结果未使用

删除宏中的分号

#define self_energy -2.0 * alpha / sqrtpi;
                                        ^^^
然后像这样写

#define self_energy ( -2.0 * alpha / sqrtpi )

不要对这些事情使用宏

根据你的定义:

#define self_energy -2.0 * alpha / sqrtpi;
您的代码替换为:

return calculate_reciprocal(0, 0, 0) + -2.0 * alpha / sqrtpi; + corr;
在这一点上,问题应该是显而易见的-在
return
语句之后,您有这个
+corr
表达式语句,它什么也不做

如果不使用宏,就不会遇到这样的问题。不要对这些事情使用宏。这可能只是一个函数:

constexpr auto self_energy(double alpha) { return -2.0 * alpha / sqrtpi; }
// ...
return calculate_reciprocal(0, 0, 0) + self_energy(alpha) + corr;

这是因为
。不要发布IDE的截图-发布编译器错误消息的文本。我认为这是因为分号
在结束当前表达式的self_energy宏的末尾。@NeilButterworth他没有收到编译器错误,他只是在IDE中收到警告。@Barmar如果IDE可以诊断,编译器也应该这样做。问题不在于使用宏,而在于错误地将宏结尾为
@Barmar具体问题可能是宏以
结尾更广泛的问题是使用宏。