在函数上使用typedef

时间:2011-11-29 11:06:21

标签: c++

在下文中,我如何使用typedef语法定义我的函数?

typedef void F();

//declare my function
F f;

//error
F f { }

1 个答案:

答案 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; }

演示:http://ideone.com/B4d95


至于为什么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]

重点:

  • 功能的typedef可用于声明功能
  • 功能的typedef不能用于定义功能