【发布时间】:2017-03-17 09:53:29
【问题描述】:
如果我有一个函数指针的 typedef,比如
typedef void (* specialFunction) (void);
我怎样才能表明我声明了该类型的函数,而不是巧合地声明了具有相同签名的函数?
我并不想强制执行任何操作,只是为了让代码更清晰(和可维护),并让函数声明很明显,比如计时器回调或 ISR 例程。
显然,我不能
extern specialFunction mySpecialFunction(void);
但是有什么方法可以在声明中使用specialFunction 来区分mySpecialFunction 和myBoringlyNormalFunction?
【问题讨论】:
-
在 C 中,函数是函数是函数。没有什么可以使某些函数(
main除外)比任何其他函数更“特殊”,或者注释函数仅用于特殊目的。您所拥有的只是 cmets 和文档。 -
例如,您可以像 Adam Dunkels 在 protothreads 中所做的那样使用
PT_THREAD(example(struct pt *pt))来声明名称为example的函数。更多信息:dunkels.com/adam/pt -
这听起来像是一个答案,而不仅仅是评论 (+1)
-
extern specialFunction mySpecialFunction(void);是合法代码。它将mySpecialFunction声明为一个不带参数的函数,并返回一个函数指针。从您的问题中不清楚这是否是您的意图 -
糟糕,抱歉,没有。这不是我想要的(+1)。我打算表明我不能使用 typedef 来声明带有 typedef 签名的函数。
标签: c function pointers maintainability