Macro definition error in C?

后端 未结 3 1203
清酒与你
清酒与你 2021-01-20 18:40
#define SOUND_SPEED 0.034;    
int rtt; //round trip time in microsecond
double distance;
distance = (double)(rtt*SOUND_SPEED)/2;

It complains erro

相关标签:
3条回答
  • 2021-01-20 19:23

    You're using C, but you're trying to use a C++ style // comment. Depending on your compiler, that may not be allowed.

    Edit: In fact, gcc -c89 -ansi gives that exact error message for a // comment and a totally different one for the extraneous ; in the define.

    0 讨论(0)
  • 2021-01-20 19:25
    #define SOUND_SPEED 0.034;
                             ^
    

    Do not use the trailing ;

    Actually you should never terminate a macro with a ;:

    PRE11-C. Do not conclude macro definitions with a semicolon https://www.securecoding.cert.org/confluence/display/seccode/PRE11-C.+Do+not+conclude+macro+definitions+with+a+semicolon

    0 讨论(0)
  • 2021-01-20 19:44

    Drop the semicolon:

    #define SOUND_SPEED 0.034; 
                             ^
    

    If you keep it the generated code will look like this:

    distance = (double)(rtt*SOUND_SPEED;)/2;
                                       ^
    
    0 讨论(0)
提交回复
热议问题