Потому что исходные коды с компилятором и объектный файл со средой выполнения - разные сущности с разными этапами и возможностями. Компиляторы С не беспокоятся о том, по какому адресу будет пытаться обратиться программа в среде выполнения, их волнуют только свои внутренние правила (и реакция на нарушение этих правил различна - от warning до error в зависимости от компилятора и ключей).
Например, типы у переменных (сущностей, объектов, идетификаторов, как угодно) должны соответствовать. Но бывают странные исключения, что можно инициализировать указатель на non-const char с помощью адреса строки, которая может размещаться компилятором в read-only памяти ( char * ptr = "hello" ; ). Передача non-const сущности в const сущность разрешима несмотря на разные типы (то есть компилятор согласиться выполнить приведение типов), потому что это не может что-то сломать. void B( const char * ptr[] ) будет преобразована в void B( const char * * ptr ), а вот noncon имеет тип char * [4] (т.е. массив из 4 указателей на char).
Потому что исходные коды с компилятором и объектный файл со средой выполнения - разные сущности с разными этапами и возможностями. Компиляторы С не беспокоятся о том, можно ли или нельзя ли обратиться по какому-то адресу, их волнуют только свои внутренние правила. Например, типы у переменных (сущностей, объектов, идетификаторов, как угодно) должны соответствовать. Под MAS, &MAS и &MAS[0] скрывается одно и то же значение, но тип данных у MAS и &MAS - разный, что и не устраивает компилятор.
TheCalligrapher, хоть на вопрос это не отвечает, но спасибо про -lm. Не заметил, что "во многих системах Linux/UNIX компилятору необходимо также передать флаг -lm (например: gcc -lm fig04_06.c), чтобы программа из примера 4.4 скомпилировалась. Этот флаг обеспечивает компоновку программы с математической библиотекой."
\\192.168.1.34
Ага, спасибо, буду знать. Мне тоже не ясно, я просто помнил, что через домашнюю группу эта задача решалась. Наверняка есть не такой ламерный способ.
Спасибо, но зачем выключать брандмауэр? Общий доступ с парольной защитой в Дополнительных параметрах общего доступа уже был выключен.
Короче, пока ждал ответа, решился вопрос так. Каждый шаг ребут.
Удалил ноут из домашней группы.
Включил ipv6 на ПК, включил ipv6 на ноуте.
Подключил ноут заново в домашнюю группу.
И повторил все то, что уже в тысячный раз повторялось, но не работало...
Открыл общий доступ к диску на ноуте, добавил HomeGroup User$
Добавил этот диск на ПК, как сетевой.
Открыл общий доступ к диску на ПК, добавил HomeGroup User$
Добавил этот диск на ноуте, как сетевой.