Несомненно, каждый другой студент C заметил это; это ново для меня.
Если я объявлю:
int xlate( void *, ... );
а затем определите xlate ()
несколькими разными способами (возможно, все определения, кроме одного, #ifdef
-выделены):
int xlate ( char *arg1 ) { ... }
int xlate ( int arg1, char *arg2, int arg3 ) { ... }
int xlate ( char arg1, int *arg2 ) { ... }
и опустите любое упоминание va_list - никогда не упоминая его -- в каждом определение xlate (); а затем вызовите xlate (), соблюдая один из несколько определений, кажется, что каждая скомпилированная версия xlate () работает именно так, как я хочу, по крайней мере, в gcc и msvc.
Гарантировано ли такое расслабленное, нетребовательное и щедрое поведение компилятора в C99?
Спасибо!
- Пит