【发布时间】:2014-01-24 04:06:12
【问题描述】:
请在这里给我一个提示:
class UIClass
{
public:
UIClass::UIClass();
};
#ifndef __PLATFORM__
#define __PLATFORM__
UIClass Platform;
#else
extern UIClass Platform;
#endif
我将这两次包括在内并得到:
LNK2005 - 平台已在 .obj (MSVS13) 中定义。
您可以猜到,这个想法是只定义一次平台。为什么#ifndef 或#define 会失败?我应该如何解决这个问题?
【问题讨论】:
-
因为您有多个定义
__PLATFORM__的cpp文件导致Platform在多个目标文件中定义。标识符__PLATFORM__保留供实现(编译器、库等)使用。有关更多详细信息,请参阅stackoverflow.com/questions/228783/…。
标签: c++ c-preprocessor ifndef