![]() |
eXeL@B —› Вопросы новичков —› VC++ : что за зверь __nullterminated в winnt.h ? |
Посл.ответ | Сообщение |
|
Создано: 27 октября 2008 17:05 · Поправил: windwail · Личное сообщение · #1 Значит по порядку. Разбираю простенькую программу. В ней встречаю PSTR... ну вроде бы все ясно, ссылка на строку. Гляжу где это определено, нахожу следующее: // winnt.h typedef __nullterminated PSTR *PZPSTR; Становится еще интереснее - что же такое __nullterminated // sal.h #define __nullterminated __readableTo(sentinel(0)) Чувствую мозг уже кипит ![]() // sal.h #define __readableTo(extent) Фсе... тупик... Во-первых, что такое sentinel(0), интуитивно я догадываюсь что это что-то связанное с 0м в конце строки... но ничего по этой функции не нашел. Во-вторых, что такое __readableTo... как-то странно эта хрень определена... #define же работает как определялка констант, которые потом в тексте заменяются, или не так ? #define MAX 100 - так например... а тут функция какая-то... В-третьих, как это можно привязать к _nullterminated... это что-то вроде префикса характеризующего PSTR ? А еще в документации встретил такую загадочную вещь typedef char FlagType; void myproc( int ) { int FlagType; } Как это понимать ? Получается что - "int char" ? Я вроде немного в си понимаю, прочитал пару книжек... но эти вещи мой моск ставят в тупик... Может быть подскажете где про такое можно почитать ? Может книжка есть где такие мелочи объясняются ? Заранее спасибо. Не судите строго я нуб в этом ![]() ![]() |
|
Создано: 27 октября 2008 17:41 · Личное сообщение · #2 |
|
Создано: 27 октября 2008 20:55 · Поправил: s0larian · Личное сообщение · #3 windwail, не парься по поводу этих макросов - на работу твоей проги это не влияет. Это всё было написано что б расширить (уточнить) спецификации си-шных функции - то есть указать что и кто может читать/писать. Ну а потом в MS есть спец. build в котором эти макросы разворачиваются и пара tools для проверки этих specs. Сделано это было что б найти и закрыть дырки в реализации. ![]() |
![]() |
eXeL@B —› Вопросы новичков —› VC++ : что за зверь __nullterminated в winnt.h ? |