我知道我的C到目前为止。我正在查看我下载的PHP的源文件,我看到了这种奇怪的语法:
PHPAPI int php_printf(const char *format, ...)
{
// code...
}
PHPAPI
在返回类型int
之前做了什么?我试过全身都在搜索,我无法理解这意味着什么。它是第二种返回类型吗?它不能是因为函数确实返回一个int。也许它扩展到头文件中声明的其他结构?
答案 0 :(得分:5)
转到makefile并添加编译源代码的行:-E
,这样您将在预处理阶段之后看到源代码。
搜索PHPAPI
的所有项目:
在php.h中找到它:
#ifdef PHP_WIN32
#include "win95nt.h"
# ifdef PHP_EXPORTS
# define PHPAPI __declspec(dllexport)
# else
# define PHPAPI __declspec(dllimport)
# endif
#define PHP_DIR_SEPARATOR '\\'
#else
#define PHPAPI
#define THREAD_LS
#define PHP_DIR_SEPARATOR '/'
#endif
现在您需要了解的是__declspec(dllexport)
以及__declspec(dllimport)
在SO帖子中What is __declspec and when do I need to use it?
规范的例子是
__declspec(dllimport)
和__declspec(dllexport)
,指示链接器导入和 从(或分别)导出DLL的符号。// header __declspec(dllimport) void foo(); // code - this calls foo() somewhere in a DLL foo();
(
__declspec(..)
只是将微软的具体内容包括在内 实现兼容性,通常用宏来包装它)