Re[2]: есть ли логика в системе типов С
От: _hum_ Беларусь  
Дата: 12.10.07 11:46
Оценка:
Здравствуйте, Мухоморец, Вы писали:

М>Здравствуйте, _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;

А вот это хорошо, если так оно есть на самом деле
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.