如何在C中使用typedef作为extern函数?

时间:2018-06-09 14:07:42

标签: c typedef c11

我的项目中有两个用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需要括号。" 我做错了什么?

1 个答案:

答案 0 :(得分:2)

typedef创建一个类型别名,而不是函数别名或其他任何内容。

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

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