【发布时间】:2015-09-25 03:05:36
【问题描述】:
我正在研究SQLite源代码(在c中),但是有些东西我无法弄清楚它们是什么,希望您能帮帮我。 我知道 c、c++ 和 JAVA 基础知识,但我从未见过这样的东西,也不知道如何搜索它。
在 c 文件中,有以下定义(等等):
#ifndef SQLITE_CDECL
# define SQLITE_CDECL
#endif
#ifndef SQLITE_API
# define SQLITE_API
#endif
然后上面的定义是这样使用的:
SQLITE_API int SQLITE_CDECL sqlite3_conf(int, ...){
//code
我知道“SQLITE_API”和“SQLITE_CDECL”不是返回类型、函数名、关键字、K&R 风格也不是变量修饰符...
为什么这些词在函数中是这样放置的?它们是干什么用的?
【问题讨论】:
-
在这个例子中很难看到,因为 SQLITE_CDECL 和 SQLITE_API 似乎都“什么都不做”。在某些平台上,可能需要“cdecl”来指定调用顺序。在其他平台上,可能需要“__declspec(dllimport)”来指定“.dll”与“.exe”。这是一个示例,其中 Sqlite 构建可能被配置为同时提供 SQLITE_CDECL 和 SQLITE_API 有意义的非空值:
__declspec(dllimport) void _cdecl func1(void);。
标签: c sqlite function c-preprocessor