相关疑难解决方法(0)

可以在函数定义中使用函数原型typedef吗?

比方说,我有一系列具有相同原型的功能

int func1(int a, int b) {
  // ...
}
int func2(int a, int b) {
  // ...
}
// ...
Run Code Online (Sandbox Code Playgroud)

现在,我想简化他们的定义和声明.当然我可以使用这样的宏:

#define SP_FUNC(name) int name(int a, int b)
Run Code Online (Sandbox Code Playgroud)

但是我想把它保存在C中,所以我尝试使用存储说明符typedef:

typedef int SpFunc(int a, int b);
Run Code Online (Sandbox Code Playgroud)

这似乎适用于声明:

SpFunc func1; // compiles
Run Code Online (Sandbox Code Playgroud)

但不是定义:

SpFunc func1 {
  // ...
}
Run Code Online (Sandbox Code Playgroud)

这给了我以下错误:

error: expected '=', ',', ';', 'asm' or '__attribute__' before '{' token
Run Code Online (Sandbox Code Playgroud)

有没有办法正确地做到这一点还是不可能?根据我对C的理解,这应该有效,但事实并非如此.为什么?


注意,gcc理解我要做的事情,因为,如果我写的话

SpFunc func1 = { /* ... */ }
Run Code Online (Sandbox Code Playgroud)

它告诉我

error: function 'func1' is initialized like a …
Run Code Online (Sandbox Code Playgroud)

c typedef function-declaration

34
推荐指数
1
解决办法
3万
查看次数

标签 统计

c ×1

function-declaration ×1

typedef ×1