Visual Studio预处理器的奇怪行为

时间:2015-02-15 12:07:15

标签: visual-studio visual-studio-2013 c++-cli preprocessor

我目前正在使用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预处理器的一些问题?

0 个答案:

没有答案