在下文中,我如何使用typedef语法定义我的函数?
typedef void F();
//declare my function
F f;
//error
F f { }
答案 0 :(得分:6)
函数的定义遵循通常的语法:
//declare my function
F f; //it is exactly equivalent to : void f();
//definition
void f() { cout << "hello world"; }
要测试该定义确实以前声明的功能的定义,请在之后调用函数f()
>声明和之前定义(阅读main()
中的评论):
//declaration
F f;
int main()
{
f(); //at compile-time, it compiles because of *declaration*
}
//definition
void f() { std::cout << "hello world" << std::endl; }
至于为什么F f{}
不起作用,因为它被语言规范明确禁止。 §8.3.5(C ++ 03)说
函数类型的typedef可用于声明函数,但不得用于定义函数(8.4)。
[Example:
typedef void F();
F fv; // OK: equivalent to void fv();
F fv { } // ill-formed
void fv() { } // OK: definition of fv
—end example]
重点: