Понятно, memcmp сравнивает структуры, содержащие переменные типа float. Не лучшая практика по меркам сегодняшних стандартов. Например, SEI CERT рекомендует воздерживаться от этого (смотри в FLP37-C. Do not use object representations to compare floating-point values). Даже в рамках самого небезызвестного IEEE 754 имеется пространство для ошибок при сравнении нулей с разными знаками или переменных со значением NaN. Но, строго говоря, стандарт языка C и не принуждает к использованию IEEE 754 вовсе (впрочем, если вы, читатель, когда-либо получите доступ к машине с иным представлением таких чисел, обязательно сообщите нам об этом!).
В случае же, если в вашей организации действуют строгие правила по сравнению чисел с плавающей точкой, наш анализатор сможет помочь следующим предупреждением:
V1014 Structures with members of real type are compared byte-wise.
P.S. Учитывая, что разработчики достаточно часто напрямую манипулируют байтами внутри чисел с плавающей запятой, автор статьи выражает сомнения по поводу действительной опасности этого малюсенького вызова memcmp.
Ждал разбор архитектуры, получил нативку пвс студии :(
"нам удалось как минимум вас повеселить"
На месте с проверкой на NULL я почти улыбнулся -_-
Руками!)
на ассемблере?
Блин. Зачем я это читал. Повелся на единорожу в шлеме
Вот это было интересно! Хотя и хотелось бы увидеть про stupid Quake bug.
Кстати, про эту багулю есть занятная статья. — https://dev-cs.ru/threads/8508/