Всем привет.
Возник вопрос по поводу вызова функции по указателю. Есть такой вот код:
#include "stdio.h"
typedef void (*FUNC)();
void func()
{
printf( "In func()\n" );
}
int main( int argc, char* argv[] )
{
FUNC f = func;
(*f)();
f();
return 0;
}
VS2010 код компилирует, под Windows вывод программы следующий:
In func()
In func()
Керниган, Ритчи пишут, что по стандарту вызов функции по указателю надо делать, как в первом варианте.
Собственно вопрос: без разыменовывания указателя (как во втором варианте) вызывать можно? Что на счет этого говорит последний стандарт С? GCC правильно скомпилирует код?