C中的宏定义错误?

#define SOUND_SPEED 0.034; int rtt; //round trip time in microsecond double distance; distance = (double)(rtt*SOUND_SPEED)/2; 

它抱怨错误:在’/’标记之前的预期表达。 是不是因为我不能使用宏来定义小数或什么?

删掉分号:

 #define SOUND_SPEED 0.034; ^ 

如果保留它,生成的代码将如下所示:

 distance = (double)(rtt*SOUND_SPEED;)/2; ^ 
 #define SOUND_SPEED 0.034; ^ 

不要使用尾随;

实际上你永远不应该用一个;

PRE11-C。 不要用分号结束宏定义https://www.securecoding.cert.org/confluence/display/seccode/PRE11-C.+Do+not+conclude+macro+definitions+with+a+semicolon

你正在使用C,但是你正试图使用​​C ++风格//评论。 可能不允许,具体取决于您的编译器。

编辑:事实上,gcc -c89 -ansi为//注释提供了确切的错误消息 ,而对于无关的则给出了完全不同的错误消息 ; 在定义中。