0

我有以下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 不承认这是一个有效的函数,或者为什么这是无效的?

4

1 回答 1

5
arguments_cleanup(void);

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

arguments_cleanup();

编译器试图解释

arguments_cleanup(void);

作为宣言。

于 2013-01-16T21:52:39.217 回答