Ошибка определения макроса в C? - PullRequest
3 голосов
/ 02 марта 2012
#define SOUND_SPEED 0.034;    
int rtt; //round trip time in microsecond
double distance;
distance = (double)(rtt*SOUND_SPEED)/2;

Жалуется на ошибку: ожидаемое выражение перед символом '/'.Было ли это потому, что я не могу использовать макрос для определения десятичных дробей или как?

Ответы [ 3 ]

8 голосов
/ 02 марта 2012

Удалите точку с запятой:

#define SOUND_SPEED 0.034; 
                         ^

Если оставить ее, сгенерированный код будет выглядеть следующим образом:

distance = (double)(rtt*SOUND_SPEED;)/2;
                                   ^
3 голосов
/ 02 марта 2012
#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

1 голос
/ 02 марта 2012

Вы используете C, но вы пытаетесь использовать комментарий в стиле C ++ //.В зависимости от вашего компилятора это может быть запрещено.

Редактировать: На самом деле, gcc -c89 -ansi дает это точное сообщение об ошибке для комментария // и совершенно другоепосторонний ; в определ.

...