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 が定義されているかどうかに応じて、コードのコンパイル済みバージョンで 1 つの関数のみを動的に提供する必要があります。ただし、GCC は、arguments_cleanup を呼び出す前に、あらゆる種類のトークンが必要であると不平を言っています。GCC がこれを有効な関数として認識しないのはなぜですか、またはなぜこれが無効なのですか?

4

1 に答える 1

5
arguments_cleanup(void);

関数を呼び出す正しい方法ではありません。

arguments_cleanup();

コンパイラは解釈しようとします

arguments_cleanup(void);

宣言として。

于 2013-01-16T21:52:39.217 に答える