私は次の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 がこれを有効な関数として認識しないのはなぜですか、またはなぜこれが無効なのですか?