
Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
27.02.2018, 19:11:43
|
|||
|---|---|---|---|
|
|||
Что означает char FAR *szStr? |
|||
|
#18+
В чем разница между char *szStr и char FAR *szStr на Windows 32, 64 ? На Маке? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 19:32:41
|
|||
|---|---|---|---|
Что означает char FAR *szStr? |
|||
|
#18+
Думаю это наследие прошлого, очень далекого прошлого. Нынче никакой разницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 20:08:04
|
|||
|---|---|---|---|
Что означает char FAR *szStr? |
|||
|
#18+
Ролг ХупинВ чем разница между char *szStr и char FAR *szStr на Windows 32, 64 ? На Маке?Может быть ни в чем. Может быть в чем-то... Когда-то, было нужно указывать как вызывается функция (или идет доступ к переменным) - через ближние или дальние адреса. Это очень сильно зависит от используемого компилятора, операционной системы, процессора, режима памяти и тд и тп... Поэтому там где заранее знали что делают библиотечную функцию (или такого было требование платформы) могли принудительно затребовать от компилятора использовать ближние или дальние адреса (NEAR / FAR). Подробнее читай учебники по ОС и системам с сегментирвоанной памятью (например Таненбаум хорошо все рассказывает). Так что с формальной точки зрения, в твоем случае ты либо оставляешь тип адреса переменной на волю компилятора, либо требуешь чтобы к переменной обращались по полному адресу. А насколько это все работает в твоем случае... Запусти компилятор с нужным ключом чтобы оно остановилось после препроцессора (для gcc/g++ это -E , для cl это /E , что для твоего компилятора сам ищи). Тогда компилятор сделает тебе один большой файл со включением всех include файлов, расшифровкой всех define. И там увидишь во что FAR превращается в реальности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|
27.02.2018, 20:18:38
|
|||
|---|---|---|---|
|
|||
Что означает char FAR *szStr? |
|||
|
#18+
White OwlРолг ХупинВ чем разница между char *szStr и char FAR *szStr на Windows 32, 64 ? На Маке?Может быть ни в чем. Может быть в чем-то... Когда-то, было нужно указывать как вызывается функция (или идет доступ к переменным) - через ближние или дальние адреса. Это очень сильно зависит от используемого компилятора, операционной системы, процессора, режима памяти и тд и тп... Поэтому там где заранее знали что делают библиотечную функцию (или такого было требование платформы) могли принудительно затребовать от компилятора использовать ближние или дальние адреса (NEAR / FAR). Подробнее читай учебники по ОС и системам с сегментирвоанной памятью (например Таненбаум хорошо все рассказывает). Так что с формальной точки зрения, в твоем случае ты либо оставляешь тип адреса переменной на волю компилятора, либо требуешь чтобы к переменной обращались по полному адресу. А насколько это все работает в твоем случае... Запусти компилятор с нужным ключом чтобы оно остановилось после препроцессора (для gcc/g++ это -E , для cl это /E , что для твоего компилятора сам ищи). Тогда компилятор сделает тебе один большой файл со включением всех include файлов, расшифровкой всех define. И там увидишь во что FAR превращается в реальности. Похоже, что на Windows он определен как #define far ... #define FAR far Непонятно, что на Маке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=57&tablet=1&tid=2017959]: |
0ms |
get settings: |
15ms |
get forum list: |
24ms |
check forum access: |
6ms |
check topic access: |
6ms |
track hit: |
58ms |
get topic data: |
19ms |
get forum data: |
5ms |
get page messages: |
55ms |
get tp. blocked users: |
2ms |
| others: | 369ms |
| total: | 559ms |

| 0 / 0 |
