我有有許多#define
語句,如一個文件 -與錯誤的#define
#ifndef UTILITY_H
#define UTILITY_H
#define BUMP 7;
#define WHEEL_DROPS 7;
#define WALL 8;
#define CLIFF_LEFT 9;
#define CLIFF_FRONT_LEFT 10;
#define CLIFF_FRONT_RIGHT 11;
#define CLIFF_RIGHT 12;
#define VIRTUAL_WALL 13;
...
...
#endif
不勝枚舉約42個不同的值。我將這個文件包含到我的其他文件中,但每當我嘗試使用這些常量之一時,都會收到錯誤。對於一個具體的例子,我嘗試做 -
Sensor_Packet temp;
temp = robot.getSensorValue(BUMP); //line 54
cout<<temp.values[0]<<endl;
我得到的錯誤是 -
main.cpp:54: error: expected ‘)’ before ‘;’ token
main.cpp:54: error: expected primary-expression before ‘)’ token
main.cpp:54: error: expected ‘;’ before ‘)’ token
我沒有看到,因爲BUMP已被定義爲什麼我收到這些錯誤。當我嘗試使用switch語句的情況下,作爲定義也會發生這種情況 -
switch(which) {
case BUMP:
//do stuff
case CLIFF_LEFT:
//do stuff
}
有什麼,我離開了有關使用#define
?我認爲我所要做的就是定義一個常量,然後我可以稱之爲它。任何幫助表示讚賞。
剛剛出現在關於最喜歡的單行C++ bug(昨天?)的問題上。 – 2011-03-28 02:12:21