Как определить константу в C ++? - PullRequest
2 голосов
/ 23 марта 2011

Для кода:

#define e 2.71828183;

double p ( int x )
{
    return 1 / ( 1 + pow ( e, -1.0 * x ) );
}

Я получаю:

math.cpp: In function ‘double p(int)’:
math.cpp:11: error: expected ‘)’ before ‘;’ token
math.cpp:11: error: expected ‘)’ before ‘;’ token
math.cpp:11: error: expected primary-expression before ‘,’ token
math.cpp:11: error: expected ‘;’ before ‘)’ token

Ответы [ 3 ]

12 голосов
/ 23 марта 2011

В конце замены макроса есть ;:

#define e 2.71828183;

При предварительной обработке ваш оператор возврата будет выглядеть так:

return 1 / ( 1 + pow ( 2.71828183;, -1.0 * x ) );
                                 ^^

, что приводит к синтаксической ошибке.

Чтобы исправить это, удалите это ;

3 голосов
/ 23 марта 2011

Поскольку вы спрашиваете о C ++:

Здесь вы можете увидеть проблемы макрозамены в действииВместо этого используйте константу:

double const e = 2.71828183;
3 голосов
/ 23 марта 2011

В макросе не должно быть точки с запятой.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...