gpt4 book ai didi

c - 宏重新定义警告

转载 作者:太空宇宙 更新时间:2023-11-04 08:07:28 24 4
gpt4 key购买 nike

我正在编写这段代码,当我尝试编译时出现警告。

#include <stdio.h>
#include <math.h>
#define EPS 1.5e-6
#define M_PI 3.14159265358979
int main()
{
double x1,x2,xm,y1,y2,ym;
int m;
for(m=0;m<11;m++){
x1=1.450;
x2=1.489;
y1=atan(pow(x1*x1-1.5*1.5,0.5)/pow(1.489*1.489-x1*x1,0.5))\
+ atan(pow(x1*x1-1.450*1.450,0.5)/pow(1.489*1.489-x1*x1,0.5))\
- 4.5 * EPS * ((2 * M_PI)/(1.5 * EPS)) * pow(1.489*1.489-x1*x1,0.5)\
+ m*M_PI*1.5;
y2=atan(pow(x2*x2-1.5*1.5,0.5)/pow(1.489*1.489-x2*x2,0.5))\
+ atan(pow(x2*x2-1.450*1.450,0.5)/pow(1.489*1.489-x2*x2,0.5))\
- 4.5 * EPS * ((2 * M_PI)/(1.5 * EPS)) * pow(1.489*1.489-x2*x2,0.5)\
+ m*M_PI*1.5;
if(y1*y2>0){
printf("change initial values\n");
}
else{
while(fabs(x1-x2)>EPS){
xm=(x1+x2)/2;
ym=atan(pow(xm*xm-1.5*1.5,0.5)/pow(1.489*1.489-xm*xm,0.5))\
+ atan(pow(xm*xm-1.450*1.450,0.5)/pow(1.489*1.489-xm*xm,0.5))\
- 4.5 * EPS * ((2 * M_PI)/(1.5 * EPS)) * pow(1.489*1.489-xm*xm,0.5)\
+ m*M_PI*1.5;
if(y1*ym>0){
x1=xm;
}
else{
x2=xm;
}
}
printf("n[%d] = %.9f;\n",m, xm);
}
}
return 0; }

警告是:

warning: 'M_PI' macro redefined [-Wmacro-redefined]

我不知道如何让警告消失

最佳答案

如果您想要使用的宏有可能已经被定义(并且可能被定义为一个有用的值),那么您可以简单地检查一下:

#ifndef M_PI
# define M_PI my_value_here
#endif

或者,如果您不信任现有值,您可以在这种情况下中止翻译:

#ifdef M_PI
# error Macro M_PI must not be defined
#else
# define M_PI my_value_here
#endif

好像是GNU C library定义这些宏(有条件地),因为“Unix98 标准”需要它们。

关于c - 宏重新定义警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41793355/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com