| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > typedef в MSVC и GCC |
| Автор: SABROG 17.9.2011, 10:32 | ||||
| Подключил хедер из Windows SDK в проект собираемый MinGW и сразу словил ошибку "typedef is initialized (use decltype instead)". Стал разбираться и наткнулся на эту запись:
Кто может объяснить логику? Сначала думал, что это определение типа определения функции типа __success, но потом понял, что ничего общего с таким нет:
|
| Автор: mes 17.9.2011, 12:26 |
| http://msdn.microsoft.com/en-us/library/ms235402(v=vs.80).aspx |
| Автор: borisbn 17.9.2011, 12:42 |
| Правильно ли я понял, что все ф-ции, возвращающие _BOOL (с подчёркиванием в начале), гарантируют, что они будут возвращать TRUE ? |
| Автор: bsa 17.9.2011, 12:57 |
| Нет. Просто если условие в скобках выполняется, то функция выполняет все взятые на себя обязанности. Если этого условия нет (__success(...)), то функция обязана выполнять их в любом случае. |
| Автор: SABROG 17.9.2011, 13:39 |
| Значит это компиляторо-зависимые функции, которые никак не соответствуют стандартам. Спасибо. |
| Автор: bsa 18.9.2011, 01:03 | ||
Этот код спасет отца русской демократии
|
| Автор: volatile 18.9.2011, 01:46 | ||||||
Это просто тайпдефится _BOOL разберем по частям смотрим файл "sal.h":
теперь смотрим что такое __inner_success(expr)
то есть выражение __success(return == TRUE) разворачивается в ничего, остается:
короче __success(exp) - это фиговина для специальных анализаторов кода и других инструментов от M$, и при обычном компилировании просто не участвует. т.е. определена в ничего. |