我正在研究现有的C++代码,它使用的是一种API.在浏览代码的过程中,我发现了一种奇怪的语法,这是我第一次看到的,我无法弄清楚它的作用或调用方式.
它是这样的:
class KINDA_API foobar : public foo {
// Some class declarations
};
Run Code Online (Sandbox Code Playgroud)
foobar之后的一切对我来说都是可以理解的.但是什么意味着KINDA_API?这是做什么的?这是任何类型的高级推导或类似的东西吗?也许有任何其他线程可以解决这个问题,我也搜索过它,但我甚至不知道这是怎么称呼^^'
通常当您以这种方式看到OMGWFT_API声明时,这是用于以正确的"模式"构建库的"神奇开关":
即
#ifdef BUILD_ME_AS_STATICLIB
#define OMGWFT_API
#else
#ifdef BUILD_ME_AS_DLL
#define OMGWFT_API declspec(dllexport)
#else
#define OMGWFT_API declspec(dllimport)
#endif
#endif
Run Code Online (Sandbox Code Playgroud)
这当然只是一个示例草图,但我认为你现在明白了.关键字取自MSVC而不是GCC <因为我意外地碰巧记得它们.
然后通过项目选项或-D命令行开关定义"BUILD_ME_AS ...."宏.
但是,OMGWFT_API可以设置为有任何意义,所以一定要grep/search一个设置它的#define.