В дополнение к другим ответам структура может (но обычно не имеет) иметь виртуальные функции, и в этом случае размер структуры также будет содержать пространство для vtbl.
С точки зрения формулировки Ваших сообщений об ошибках я рекомендую обратиться к следующим руководствам по стилю для Приложений Windows:
Окончательная лучшая практика должна препятствовать тому, чтобы пользователь вызвал ошибки во-первых.
Не говорите пользователям ничего, о чем они не заботятся; код ошибки 5064 не значит вещь ни для кого. Не говорите им, что они сделали что-то не так; запретите его во-первых. Не обвиняйте их, особенно не для ошибок Ваше сделанное программное обеспечение. Прежде всего, когда существует проблема, скажите им, как зафиксировать ее так, они могут идти дальше и получить некоторую сделанную работу.
Хорошее сообщение об ошибке должно:
Одна вещь, которую я начал делать, состоит в том, чтобы генерировать уникальное число, которое я отображаю в сообщении об ошибке и пишу в файл журнала, таким образом, я могу найти ошибку в журнале, когда пользователь отправляет мне снимок экрана или звонит и говорит, "Я получил ошибку. Это говорит, что мой ссылочный номер 0988-7634"
Из соображений безопасности не предоставляйте внутреннюю информацию о системе, в которой не нуждается пользователь.
Тривиальный пример: при отказе войти в систему, не говорите пользователю, если имя пользователя является неправильным, или пароль является неправильным; это только поможет взломщику к грубой силе система. Вместо этого просто скажите, что "Комбинация Имени пользователя/Пароля недопустима" или что-то как этот.
Попытайтесь выяснить способ записать Ваше программное обеспечение, таким образом, оно исправляет проблему для них.
Для любого ввода данных пользователем (строки, имена файлов, значения, и т.д.), всегда отображают ошибочное значение с разделителями вокруг этого (кавычки, скобки, и т.д.). например.
Имя файла, которое Вы ввели, не могло быть найдено: "somefile.txt"
Это помогает показать любой пробел/возвраты каретки, который, возможно, крался в и значительно уменьшает поиск и устранение неисправностей и разочарование.
Более короткие сообщения могут на самом деле быть прочитаны.
Чем дольше Ваше сообщение об ошибке, тем меньше пользователь будет читать. Однако попытайтесь осуществить рефакторинг код, таким образом, можно устранить исключения, если существует очевидный ответ. Попытайтесь только иметь исключения, которые происходят на основе вещей вне Вашего пользователя или управления Вашего кода.
Лучшее сообщение об исключении является тем, которое Вы никогда не должны отображать.
Обработка ошибок всегда лучше, чем сообщение об ошибке, но так как Вы модифицируете сообщения об ошибках и не обязательно, код здесь является несколькими предложениями:
Пользователи хотят решения, не проблемы. Помогите им знать, что сделать после ошибки, даже если сообщение так же просто как, "Закрыть текущее окно и повторяют Ваше действие".
Я - также большой поклонник централизованного журналирования ошибок. Удостоверьтесь, что журнал является и человеком и поддающимся сканированию компьютером. Пользователи не всегда сообщают, какие проблемы они имеют, особенно если они могут 'работаться вокруг', таким образом, журнал может помочь Вам знать то, в чем вещи нуждаются зафиксированный.
Если можно управлять ошибочным диалоговым окном легко, имея диалоговое окно, которое показывает хорошее, читаемое сообщение с кнопкой 'деталей', чтобы показать, что код ошибки, трассировка, и т.д. может быть большой справкой для проблемы в реальном времени, решающей также.
Поддержка многоязычного применяется для всех видов сообщений, но имеет тенденцию быть забытой в случае сообщений об ошибках.
Я был бы второй не сообщение пользователю бесполезная тайная информация как числовые коды ошибок. Я развил бы это однако путем высказывания для определенного входа той информации для поиска и устранения неисправностей более технически опытными людьми.