Варарги предлагают своего рода бедняка? s полиморфизм?

Несомненно, каждый другой студент 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?

Спасибо!

- Пит

6
задан Carl Norum 17 December 2010 в 02:02
поделиться