c - 如何理解 "typedef int (xxx)(int yyy);"?

标签 c syntax

typedef int (xxx)(int yyy); 似乎定义了一个名为 xxx 的函数指针,它指向一个带有整数参数的函数 yyy.

但是我不明白那个语法...任何人都可以给出一个很好的解释吗?


我发现 typedef int xxx(int yyy); 仍然有效。它们有什么区别吗?

最佳答案

这定义了函数类型,而不是函数指针类型。

typedef 的模式是它修改任何声明,而不是声明一个对象,它声明一个对象将具有的类型的别名。

这是完全有效的:

typedef int (xxx)(int yyy); // Note, yyy is just an unused identifier.
 // The parens around xxx are also optional and unused.

xxx func; // Declare a function

int func( int arg ) { // Define the function
    return arg;
}

C 和 C++ 语言明确禁止使用 typedef 名称作为函数定义中的整个类型。

关于c - 如何理解 "typedef int (xxx)(int yyy);"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18456275/

相关文章:

c - 在C中简化二进制分数时的无限循环

c++ - 向下指针键入与 shared_ptr 一起使用的级别

javascript - AngularJS 加载并使用 javascript 检查语法

java - Java 枚举器语法

iphone - 奇怪的 objective-c 语法——方括号和@符号

c - 访问越界内存时没有段错误

c - fork() 会创建别名吗?

无法使用 mingw 构建 mariadb C 连接器

c - C语言中删除字符数组中的空格

java - 什么是 Java ? : operator called and what does it do?