首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >为什么要用括号将函数括起来呢?

为什么要用括号将函数括起来呢?
EN

Stack Overflow用户
提问于 2013-06-20 14:19:55
回答 1查看 518关注 0票数 2

我展示了一些我确实理解的代码。

下面的代码是示例代码。

代码语言:javascript
运行
复制
static void (_func)(int p);

int main()
{
....
    _func(3);
....
}

static void (_func)(int p)
{
 ....
}

一般来说,我知道用括号括起来的函数是用'*‘表示函数指针作为(*_func)的,但是上面的代码为什么在函数声明时用括号括住函数?

使用这种方法有什么原因吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-20 16:02:22

用括号括起函数名可以防止它被同名的类函数宏“覆盖”。

例如,有时一个函数可能被实现为宏,但它也可能需要被实现为一个实际的函数(其中一个原因可能是为了获得指向它的指针)。此API的实现者可能会将函数名的声明和实际的函数实现用括号括起来,这样就不会与宏名冲突。

然后,API的用户可以决定,无论出于什么原因,如果他们想要使用实际的函数而不是宏,他们可以使用#undef _func或使用括号中的函数名来避免使用宏。

如C99 7.1.4“库函数的使用”中所述:

头中声明的任何函数都可以额外实现为头中定义的类似函数的宏,因此,如果库函数在包含其头时显式声明,则可以使用下面所示的技术之一来确保声明不受此类宏的影响。函数的任何宏定义都可以通过将函数的名称括在括号中来在本地取消,因为该名称后面没有表示宏函数名展开的左括号。出于相同的语法原因,允许使用库函数的地址,即使它也被定义为宏。使用#undef删除任何宏定义也将确保引用实际的函数。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17206551

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档