我正在尝试编译以下源代码,它可以在gccMicrosoft 和 Microsoft 的cl.exe.
void SomethingBeforeExit();
void SomethingBeforeExit()
{
// some code
_exit(0);
}
int main(int argc, char *argv[])
{
// some code
atexit(SomethingBeforeExit);
}
但是,我从以下消息中收到C4113 警告:cl.exe
SomeCode.c(10): warning C4113: 'void (__cdecl *)()' differs in parameter lists from 'void (__cdecl *)(void)'
正如我所说,源代码仍然可以成功编译并且似乎可以工作。我的目标是防止在 中发生此警告cl,因为gcc在编译时不会生成任何警告。
我假设该函数的声明没有被视为void SomethingBeforeExit(void),但是,我不知道如何专门将函数的参数列表声明为void。
我正在使用VS14and C/C++ 19.00.23918 for x86forcl.exe和gcc v5.4.0编译器来比较生成的警告。