【发布时间】:2020-01-06 19:12:15
【问题描述】:
我有一个头文件,其中包含
#define PROTOTYPE(s) s
这有什么意义?似乎它只会用自己替换输入。
它周围还有很多其他指令,但唯一一个似乎有任何意义的指令只是检查了它是否已定义:#ifndef PROTOTYPE。我在 HDF4 头文件中发现了一些这样做的地方:#define PROTOTYPE。所以,这些都没有真正解决我的问题。看起来还是没什么用。
它的使用方法如下:
CS_RETCODE clientmsg_callback PROTOTYPE((
CS_CONTEXT * context,
CS_CONNECTION *connection,
CS_CLIENTMSG *clientmsg));
这是使用 Sybase Open Client 的项目的一部分。后面会用到clientmsg_callback:
ct_callback(context, NULL, CS_SET, CS_CLIENTMSG_CB,
(CS_VOID *)clientmsg_callback);
我要离开这里的示例程序:
clientmsg_callback 稍后实现。我认为该示例最初是用 C 编写的,而不是 C++。也许这与它有关?
【问题讨论】:
-
附近是否有
#if/#ifdef/#ifndef/#else指令可能有不同的定义?在其他宏中使用时可能会有所不同,尤其是在#或##附近。它可能只是一种评论风格。没有足够的上下文来真正回答。 -
作为一般答案:因为有人可能有理由想要更改
PROTOTYPE。如果您在代码中看到看似无用的奇怪定义,请考虑如果有人想方便地更改某些内容,则可能具有灵活性。