2011-03-23 64 views
2

的代碼:如何在C++中定義一個常量?

#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 
+0

'#define e'可能不是一個好主意。如何使用'exp()'而不是'pow(e,...)'? (這不是爲了回答你的問題。) – 2011-03-23 18:41:26

+6

更喜歡「const double e = 2.71828183;」這不會有你的問題 – stefaanv 2011-03-23 18:45:27

+1

@stefaanv:哎呀,把它放在一個命名空間中:'命名空間數學{const double e = 2.71828183;}' – dmckee 2011-03-23 18:57:22

回答

12

有一個在你的宏替換的末尾;

#define e 2.71828183; 

在預處理您return語句看起來像:

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

這會導致語法錯誤。

爲了解決這個問題刪除;

+0

具體而言,請刪除分號。 – robert 2011-03-23 18:40:19

3

正如你的問題是關於C++:

在這裏你可以看到在行動宏觀替代的問題。相反,使用常數:

double const e = 2.71828183;