|
|
|
SAL - кое-что новое для С++
|
|||
|---|---|---|---|
|
#18+
SAL - Standard Annotation Language, с недавних пор поддерживаемый компилятором Microsoft C++ (входит в Visual Studio и Windows SDK). Я однажды показывал это на Днях Разработчика, приведу пример и здесь. SAL позволяет писать вот конструкции вида: _checkReturn __bcount_opt(_Size) void *__cdecl malloc(__in size_t _Size); Это всем известная функция malloc, в которую добавлены несколько дополнительных атрибутов: __in указывает, что функция только читает из параметра _Size и заодно проверяет, что он инициализирован __bcount_opt(_Size) проверяет, что возвращенный функцией указатель действительно указывает на выделенный в куче блок памяти указанного размера. При этом суффикс _opt указывает, что может вернуться и NULL __checkReturn проверяет, что после вызова функции возвращенное значение было проверено вызывающей стороной на NULL до использования. Например, при компиляции вот такого кода: int * p; p = malloc(10); &p = 1; Компилятор покажет предупреждение warning C6031: Return value ignored: 'malloc', что возвращенное значение не проверено на NULL. Подобных атрибутов много и узнать о них, а также о будущем развитии SAL вы можете из статьи Майкла Ховарда (Michael Howard) “A Brief Introduction to the Standard Annotation Language (SAL)”. http://blogs.gotdotnet.ru/personal/allo/ct.ashx?id=c4109f02-87fc-421d-b322-34b2f7ce4719&url=http%3a%2f%2fblogs.msdn.com%2fmichael_howard%2farchive%2f2006%2f05%2f19%2f602077.aspx ------------------------------------------ оригинал http://blogs.gotdotnet.ru/personal/allo/PermaLink.aspx?guid=c4109f02-87fc-421d-b322-34b2f7ce4719 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2006, 07:57 |
|
||
|
|

start [/forum/topic.php?fid=57&gotonew=1&tid=2030062]: |
0ms |
get settings: |
7ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
165ms |
get topic data: |
12ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
| others: | 202ms |
| total: | 464ms |

| 0 / 0 |
