【发布时间】:2016-02-26 22:18:50
【问题描述】:
我正在尝试开发一个必须独立于平台的库。在编写库 API 时,使用一些预处理器定义为函数添加一些前缀是一种很好的做法。
例如,Windows API 有 WINAPI,OpenMPI 有 OMPI_DECLSPEC 等等……
OpenMPI:
OMPI_DECLSPEC int MPI_Init(int *argc, char ***argv);
OpenGL:
GLAPI void GLAPIENTRY glBegin( GLenum mode );
通过这个预处理器定义,程序员可以为库中的函数设置导出选项、可见性和调用约定。如您所见,在 OpenGL 函数声明中,有两种不同的预处理器定义。
这个前缀在文献中叫什么名字?
编辑: https://gcc.gnu.org/wiki/Visibility 在此页面中,讨论了该主题。我认为,这种宏应该有一个特殊的名称。我们可以将其命名为“可见性宏”之类的,但是这个宏可以根据编译器、操作系统等设置其他类型的东西……
【问题讨论】:
-
你几个小时前已经发布了同样的问题!不!如果问题已关闭,请编辑以符合站点规则并要求重新打开。此外,它在很大程度上取决于您使用的语言。 C 和 C++ 是不同的语言。不要要求两种语言的解决方案,而只要求您打算使用的一种。
-
不,他们不能。您只需使用非常小的通用子集或使用 C++ 编译器编译 C 语法,忽略不同的语义并希望获得最好的结果。无论如何,你错过了真正的重点。
标签: c++ c api gcc visual-c++