我目前正在使用C ++ / CLI开发VS2013社区。我想在那里做一些跨平台的抽象类,并且要足够聪明我写这样的标题:
#ifndef SOMECLASS_H
#define SOMECLASS_H
#ifdef _MSC_VER
#define PUBLIC_INTERFACE public interface
#else
#define PUBLIC_INTERFACE
#endif
PUBLIC_INTERFACE class SomeClass {
public:
virtual int DummyMethod(void) = 0;
};
#endif // SOMECLASS_H
问题在于宏PUBLIC_INTERFACE,它应该在MS编译器上给我"公共接口类"在预处理器完成工作之后。不幸的是,我所拥有的是#34;公共结构类"。为什么? 我在想这是一个特例,预处理器想做一些特殊的魔术(我不是托管C ++的专家),我写道:
#ifdef _MSC_VER
public interface class SomeClass {
#else
class SomeClass {
#endif
public:
virtual int DummyMethod(void) = 0;
};
但是在这种情况下一切正常,预处理器产生了我"公共接口类"。翻译"界面"是什么原因?宏中的关键字" struct"关键词。我做错了什么或这是MS预处理器的一些问题?