我是否需要在头文件和源文件中都指定调用约定?
例如,
header.h
void __cdecl Foo();
source.cpp
void __cdecl Foo()
{
}
答案 0 :(得分:4)
否。
来自the docs:
对于非静态类函数,如果该函数是离线定义的,则不必在离线定义中指定调用约定修饰符。也就是说,对于类非静态成员方法,在定义时假定在声明期间指定的调用约定。给定此类定义:
struct CMyClass { void __cdecl mymethod(); };
这个
void CMyClass::mymethod() { return; }
等效于此:
void __cdecl CMyClass::mymethod() { return; }