2008/07/09

g++ 巨集問題

以下這段程式碼在 GNU g++ compiler 下會出現 :
cpp3.cpp:34:1: 錯誤: 粘貼「const」和「=」不能給出一個有效的預先處理識別字
cpp3.cpp:34:1: 錯誤: 粘貼「const」和「=」不能給出一個有效的預先處理識別字
cpp3.cpp:34:1: 錯誤: 粘貼「const」和「=」不能給出一個有效的預先處理識別字
cpp3.cpp:39:1: 錯誤: 粘貼「const」和「;」不能給出一個有效的預先處理識別字
cpp3.cpp:39:1: 錯誤: 粘貼「const」和「;」不能給出一個有效的預先處理識別字
cpp3.cpp:39:1: 錯誤: 粘貼「const」和「;」不能給出一個有效的預先處理識別字

#define INTERFACE_Creature(terminal) \
public: \
virtual std::string GetName() const ##terminal \
virtual int GetHitPoints() const ##terminal \
virtual float GetMaxVelocity() const ##terminal

#define BASE_Creature INTERFACE_Creature(= 0;)
#define DERIVED_Creature INTERFACE_Creature(;)

class Creature
{
BASE_Creature
};

class SnowCrab : public Creature
{
DERIVED_Creature
};

確定沒有打錯字, 回 Windows 用 Visual Studio 2005 驗證一下了. 完全無誤且可以執行.看來是
g++ 參數沒有設對或是真的有問題囉!