在下面,我如何使用typedef语法定义我的函数?
typedef void F();
//declare my function
F f;
//error
F f { }
Run Code Online (Sandbox Code Playgroud)
函数的定义遵循通常的语法:
//declare my function
F f; //it is exactly equivalent to : void f();
//definition
void f() { cout << "hello world"; }
Run Code Online (Sandbox Code Playgroud)
要测试的定义确实是定义这是以前functon的声明,调用函数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; }
Run Code Online (Sandbox Code Playgroud)
至于为什么F f{}不起作用,因为它被语言规范明确禁止.§8.3.5(C++ 03)说
函数类型的typedef可用于声明函数,但不能用于定义函数(8.4).
Run Code Online (Sandbox Code Playgroud)[Example:
typedef void F();
F fv; // OK: equivalent to void fv();
F fv { } // ill-formed
void fv() { } // OK: definition of fv
—end example]
Run Code Online (Sandbox Code Playgroud)
重点:
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |