Здравствуйте, Мухоморец, Вы писали:
М>Здравствуйте, _hum_, Вы писали:
__>>int f(int);
__>>int g(int i){return i;}
__>>f = g;// ошибка
М>рассматривай как const тогда
Тогда, получается, что переменной типа "функция" в С нет (есть тип, но переменной этого типа нет — только константы)
А тогда запись int f(int); должна означать не определение, а какое-то действие иного характера, типа декларирование для компилятора. Но ведь в struct{ int f(int); } X; эта же запись означает определение (под указатель на функцию отводится место в памяти, насколько я понимаю). Получается одна и та же запись в разных местах означает различное..
__>>и второй вопрос, почему, если объявляется указатель на функцию, то есть
__>>int (*f)(int);
__>>то валидна запись
__>>f = g;
М>могу ошибаться, но это в стиле С
__>>f = &g;
М>a это в стиле С++
М>в современных С++ компиляторах оставлено для поддержки С
М>а ля
М>int m[10];
М> m == &m;
А вот это хорошо, если так оно есть на самом деле