- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
#if __STDC_WANT_SECURE_LIB__
_Check_return_wat_ _CRTIMP_ALTERNATIVE errno_t __cdecl wcscat_s(_Inout_z_cap_(_SizeInWords) wchar_t * _Dst, _In_ rsize_t _SizeInWords, _In_z_ const wchar_t * _Src);
#endif
__DEFINE_CPP_OVERLOAD_SECURE_FUNC_0_1(errno_t, wcscat_s, _Deref_prepost_z_ wchar_t, _Dest, _In_z_ const wchar_t *, _Source)
__DEFINE_CPP_OVERLOAD_STANDARD_FUNC_0_1(wchar_t *, __RETURN_POLICY_DST, _CRTIMP, wcscat, _Pre_cap_for_(_Source) _Prepost_z_, wchar_t, _Dest, _In_z_ const wchar_t *, _Source)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t * __cdecl wcschr(_In_z_ const wchar_t * _Str, wchar_t _Ch);
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t * _Str1, _In_z_ const wchar_t * _Str2);
#if __STDC_WANT_SECURE_LIB__
_Check_return_wat_ _CRTIMP_ALTERNATIVE errno_t __cdecl wcscpy_s(_Out_z_cap_(_SizeInWords) wchar_t * _Dst, _In_ rsize_t _SizeInWords, _In_z_ const wchar_t * _Src);
#endif
Хедеры из Microshit Visual Studio. Там так почти везде...
bax 02.02.2011 12:25 # −1
guest 02.02.2011 13:04 # 0
Да и - конструкцию 10 раз можно было не повторять.
bax 02.02.2011 13:50 # −2
guest 02.02.2011 13:59 # +1
А зачем?
Тут же Вы заявили http://govnokod.ru/5485#comment71857 , что "этот файл не предназаначен для восприятия человеком". Значит не зачем групировать по функциям, а нужно для компилятора сгруппировать, что-бы не было лишних проверок #if __STDC_WANT_SECURE_LIB__. Зачем на это тратить время во время компиляции? Что-бы было понятнее группируют по функциям? Смотря на этот код думается, что этой цели у майкрософта не было...
bax 02.02.2011 14:18 # 0
И да, если вам кажется, что ошибка компиляции произошла из-за системного заголовка, то, с большой вероятностью, это не так. Обычно в таких случаях я читаю документацию по используемой библиотеке.
guest 02.02.2011 14:47 # 0
Нет. Не кажется и я это оговорил в том говнокоде. В системном заголовке приходится разбираться, если ошибку показывает компилятор в системном заголовке (понятно, что ошибка скорее всего при этом будет не в нем, просто компилятор показывает не в место основной ошибки). Попробуй в системном заголовке разберись, если код в нем говно.
absolut 02.02.2011 14:54 # −1
guest 02.02.2011 14:57 # +2
absolut 02.02.2011 15:16 # 0
guest 02.02.2011 15:46 # 0
Это помогает. Но лучше иметь больше методов нахождения реального места ошибки, а не того, куда указал компилятор.
>комментировать пользовательский код
А как это помогает в поиске ошибки, которая находится не в том месте (системный хеадер), куда указал компилятор, а в другом?
absolut 02.02.2011 16:56 # 0
Ну Вы же сами здесь и ответили. Если ошибка не там, где указал компилятор, скорее всего она в пользовательском коде.
guest 02.02.2011 18:10 # 0
Спасибо КЭП. Вы большие проекты видили в несколько сотен хедеров и прочих файлов? В каком из них ошибка ведь искать нужно как-то. Для этого и приходится для локализации ошибки разбирать системный хедер, что-бы хоть как-то сузить область поиска.
guest 02.02.2011 18:17 # 0
У нас код проектов пишется под несколько платформ, поэтому код должен компилироваться на различных компиляторах с различным образом реализованной стандартной библиотекой. Самое интересное, что абсолютно безошибочный код, компилирующийся на нескольких платформах на ура, на других выдаёт ошибки в системных хедерах. Так, что ваше утверждение не верно. Ошибки нет, но компилятор о ней говорит, указывая на системный хедар. Это просто не совместимые реализации стандартной библиотеки.
absolut 02.02.2011 18:35 # 0
Обратите внимание на "если" и "скорее всего".
Если код не собирается - это уже ошибка.
Для кроссплатформенной реализации понятно что придется искать различия в компиляторах и библиотеках. Без этого никак.
guest 02.02.2011 18:47 # 0
Нет. В условиях реалий данной области программирования - мелкие различия не указаны не в каких документах, а на них именно и вылазят ошибки в системных хедерах.
Придется искать реальные места появившихся ошибок, а не различия в компиляторах и библиотеках.
absolut 02.02.2011 19:19 # −1
guest 02.02.2011 15:52 # +1
Это крайне простой случай. Есть такие, что для поиска реального места ошибки приходится разбираться в хедерах. Чего стоит один лишь fatal error C1001: INTERNAL COMPILER ERROR в Microsoft Visual C++ 6.0... Который совсем на место ошибки может не указывать, тк не всегда его знает...
absolut 02.02.2011 16:59 # 0
Я и не собирался ничего усложнять :)
>fatal error C1001: INTERNAL COMPILER ERROR
Поставьте SP6.
guest 02.02.2011 18:06 # 0
Да не Вы усложняете, а ошибка более сложная, чем эта мелочь.
>Поставьте SP6.
Давно стоит, а вылазит регулярно в этом недописаном компиляторе...
absolut 02.02.2011 18:22 # 0
Разбор хедеров позволяет что-то прояснить ?
guest 02.02.2011 18:34 # 0
Ну если голова есть, то конечно. При таком объёме проектов это просто необходимость...
bax 02.02.2011 14:54 # −1
По поводу ошибок: имеется в виду, что в системных заголовках не нужно разбираться в 99,9% случаях, неужели не понятно.
guest 02.02.2011 15:00 # 0
absolut 02.02.2011 15:19 # 0
bax 02.02.2011 15:24 # −2
guest 02.02.2011 15:43 # +1
absolut 02.02.2011 17:04 # 0
guest 02.02.2011 18:05 # +1
Нет под некоторые платформы качественных компиляторов.
absolut 02.02.2011 18:20 # 0