gpt4 book ai didi

c - 如何在 C 中将 typedef 用于 extern 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 07:55:04 24 4
gpt4 key购买 nike

我的项目中有两个用 C11 编写的模块:“test1.c”和“test2.c”。模块“test1.c”:

int FunctionWithVeryLONGLONGLONGLONGName(char* data)
{
// do something
}

模块“test2.c”:

extern int FunctionWithVeryLONGLONGLONGLONGName(char* data);

int main(void)
{
char data[ DATA_LEN + 1 ] = { "test_data" };
FunctionWithVeryLONGLONGLONGLONGName(data);
return 0;
}

我想在模块“test2.c”中使用函数“FunctionWithVeryLONGLONGLONGLONGName”的短名称而不修改模块“test1.c”。例如,像这样:

FuncWithShortName(data);

我尝试做:

extern int FunctionWithVeryLONGLONGLONGLONGName(char* data);
typedef int FunctionWithVeryLONGLONGLONGLONGName(char* data);
FunctionWithVeryLONGLONGLONGLONGName FuncWithShortName;

int main(void)
{
char data[ DATA_LEN + 1 ] = { "test_data" };
FuncWithShortName(data);
return 0;
}

但是编译器报错:“函数 FunctionWithVeryLONGLONGLONGLONGName 的定义需要括号。”我做错了什么?

最佳答案

typedef 创建类型别名,而不是函数别名或其他任何东西。

您可以通过定义指向函数的文件本地指针来获得某种函数别名:

static int (*const FuncWithShortName)(char*) =
FuncWithVeryLONGLONGLONGLONGName;

关于c - 如何在 C 中将 typedef 用于 extern 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50775118/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com