我是否需要在头文件和源文件中都指定调用约定

时间:2018-12-03 22:04:42

标签: c++ visual-c++ language-lawyer

我是否需要在头文件和源文件中都指定调用约定?

例如,

header.h

void __cdecl Foo();

source.cpp

void __cdecl Foo()
{
}

1 个答案:

答案 0 :(得分:4)

否。

来自the docs

  

对于非静态类函数,如果该函数是离线定义的,则不必在离线定义中指定调用约定修饰符。也就是说,对于类非静态成员方法,在定义时假定在声明期间指定的调用约定。给定此类定义:

struct CMyClass {
   void __cdecl mymethod();
};
     

这个

void CMyClass::mymethod() { return; }
     

等效于此:

void __cdecl CMyClass::mymethod() { return; }