GCC函数调用错误



我有以下C代码:

#ifdef _MODE_DEBUG
void program_exit(void){
#else
void program_exit(const unsigned char* fileName, unsigned int lineNumber){
    printf("The program was called to terminate early from file "%s" line %u", fileName, lineNumber);
#endif
//We have to call cleanup() wherever possible.
arguments_cleanup(void);
exit(1);
}

根据是否定义了_MODE_DEBUG,它应该在预编译版本的代码中动态地只提供一个函数。然而,GCC抱怨它在调用arguments_cleanup之前需要所有类型的令牌。为什么GCC不承认这是一个有效的函数,或者为什么这是无效的?

arguments_cleanup(void);

不是调用函数的正确方式,它应该是

arguments_cleanup();

编译器试图解释

arguments_cleanup(void);

最新更新