我的项目中有两个用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;
}
我想使用短名称功能' FunctionWithVeryLONGLONGLONGLONGName'在模块' test2.c'没有修改模块&test; c'。 F.e。,像这样:
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需要括号。" 我做错了什么?
答案 0 :(得分:2)
typedef
创建一个类型别名,而不是函数别名或其他任何内容。
您可以通过定义函数的文件本地指针来获得某种函数别名:
static int (*const FuncWithShortName)(char*) =
FuncWithVeryLONGLONGLONGLONGName;