类A和它的构造函数,采用__cdecl方式:
class A
{
__cdecl A() {}
};
在
VS2019会给出警告:warning C4166: 构造函数/析构函数的非法调用约定,
如果改成 class A { __stdcall A() {} };
,就不会产生任何警告,貌似构造函数和析构函数不能是__cdecl
?
不过在gcc上编译却不会给出警告,
但是 调用反汇编会发现,即使构造函数强行声明为__cdecl,生成的构造函数的反汇编仍然含有ret,即仍然是__stdcall的。
这说明,构造函数是不能为__cdecl的
求助大佬原因