有关typedef的一段代码

source code

#include <stdio.h>

typedef int TypedefTestFunc(int);
TypedefTestFunc typedefTestFunc;

int main() {
    printf("Hello, World : %d\n", typedefTestFunc(3));
    return 0;
}

int typedefTestFunc(int val){
    return val;
}

原本去掉typedef int TypedefTestFunc(int);TypedefTestFunc typedefTestFunc;这段代码是无法运行的,因为printf函数中typedefTestFunc是未定义的。

现在代码是正常编译运行的。猜测应该是 typedef定义了一个函数类型TypedefTestFunc,然后该函数类型定义了一个typedefTestFunc函数定义,而后边的

int typedefTestFunc(int val){
    return val;
}

则是该函数定义的具体实现,由于typedefTestFunc在printf函数之前进行了定义,所以该段代码可以正常编译通过。

这段代码的有趣之处在于可以对typedefTestFunc当做一个TypedefTestFunc类型的变量在函数间进行传递。这个用法在《Unix高级环境编程》中的P105的文件遍历程序实例中使用。另外这段代码也是来源于这里,挺有意思,做一下记录。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。