函数声明中的宏

时间:2013-09-09 10:44:23

标签: c++ c c-preprocessor

我正在查看v4l头文件,并找到了具有以下结构的函数定义。

#define SOME_VAR

SOME_VAR int somefunc(int i,....);

以这种方式使用#define指令的目的是什么?

提前致谢

1 个答案:

答案 0 :(得分:5)

您可以指定调用约定或导入/导出标记。例如,您构建DLL并具有一些要导出的函数的Visual Studio,您可以重用您的头文件。要编译导出,请使用

#define SOME_VAR __declspec(dllexport)
在您编写的导入网站上

#define SOME_VAR __declspec(dllimport)

在两种情况下仅使用一个include减少了更新过程中可能出现的错误以及代码的错误修复。

在上面提到的情况下,它似乎是为了将来使用,因为某些平台有其他调用约定(例如pascal调用约定)而不是其他。

Visual Studio使用类似的存根,即宏WINAPI,它也是空的。