На MSVC и ССАГПЗ (GCC) 4.8.3 20140911 следующие компилируется и работает просто отлично:C - функция типы указателей с именованными параметрами
#include <stdio.h>
int func(int a, int b){
return 0;
}
int main(void){
int (*funcPointer)(int a, int b);
funcPointer = func;
printf("funcPointer = %p\n", funcPointer);
return 0;
}
Является ли такое поведение хорошо определен, или он нестандартен, и на самом деле запрещено использовать типы указателей функций с именованными параметрами (т.е. именами, а также типами в списке параметров)?
Говоря о ** msvc ** и ** gcc ** (всего две реализации) Что вы имеете в виду с нестандартным? Насколько я считаю,% p не является стандартным форматом для печати указателей (не уверен, что c99 и позади) Также не знаю, чего вы хотите добиться, чтобы напечатать указатель функции вообще. –
@ LuisColorado: нет причин действительно, только для демонстрационных целей =) – Mints97
Да, но в этом случае не стоит говорить о стандартном поведении, так как есть варианты поведения как реализации. Большинство реализаций используют точку входа вызова функции в качестве указателя на нее, поэтому нет никакой разницы в значении, хранящемся в переменной после проверки типа (во время компиляции) –