C中的宏定义错误?
它抱怨错误:在“/”标记之前应该有表达式。是因为我不能用宏定义小数还是什么?删除分号:C中的宏定义错误?,c,macros,c-preprocessor,C,Macros,C Preprocessor,它抱怨错误:在“/”标记之前应该有表达式。是因为我不能用宏定义小数还是什么?删除分号: #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; ^ 不
#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;
^
不要使用尾随的代码>
实际上,您永远不应该用终止宏代码>:
PRE11-C。不要用分号结束宏定义
你使用C,但是你尝试使用C++风格<代码> //< /COD>注释。根据编译器的不同,这可能是不允许的
编辑:事实上,gcc-c89-ansi为/
注释给出了准确的错误消息,而为无关的给出了完全不同的错误消息代码>在define中。@ouah来自C99,但是较旧的编译器肯定会在这段代码上失败。因为这个问题没有提到使用了什么编译器,所以我觉得值得一提。老实说,我甚至不知道有哪个C89编译器不支持它作为默认扩展。@ouah Sun的C编译器在90年代曾经失败过,不确定当前C89模式的编译器是否支持它。但正如我所说,没有提到编译器是否是C89。我有Sun C编译器(Solaristudio 12.2,带有cc 5.0)安装在我的Linux机器上,我刚刚对它进行了测试:/
默认接受。@ouah//gcc-c89-ansi的注释给出了问题错误:在“/”标记之前的预期表达式
,而define中的分号在“;”之前给出了“错误:预期”)任何模式下的令牌
。问题是指/token one.+1一个愚蠢的错误——我仍然每隔几年犯一次:(它的可能重复项)查看预处理器的输出会更有说服力,例如,gcc-e foo.c
distance = (double)(rtt*SOUND_SPEED;)/2;
^
#define SOUND_SPEED 0.034;
^