Тема: Оператор []
Читаю код, написаний одним генієм. В ньому є щось типу отакого:
Працює правильно, як зокрема цей код, так і в проекті. Але чи є гарантія, що одного разу пам'ять не виділиться якось інакше і все не піде коту під хвіст?
Ви не увійшли. Будь ласка, увійдіть або зареєструйтесь.
Ласкаво просимо вас на україномовний форум з програмування, веб-дизайну, SEO та всього пов'язаного з інтернетом та комп'ютерами.
Будемо вдячні, якщо ви поділитись посиланням на Replace.org.ua на інших ресурсах.
Для того щоб створювати теми та надсилати повідомлення вам потрібно Зареєструватись.
Український форум програмістів → C++ → Оператор []
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися
Читаю код, написаний одним генієм. В ньому є щось типу отакого:
Працює правильно, як зокрема цей код, так і в проекті. Але чи є гарантія, що одного разу пам'ять не виділиться якось інакше і все не піде коту під хвіст?
Ні, не зобов'язаний. Хоча на всіх знайомих мені архітектурах має спрацювати, в деяких випадках компілятор має право додати зайві байти в структуру (зокрема для вирівнювання по параграфах/сторінках пам'яті).
У M$ є така фішка, як __declspec(align(...)), щоб гарантувати розміщення.
В С++ з'явився оператор alignof.
Але якщо хочете гарантувати, що спрацює - то додайте масив float-ів в union-і з a,b,c, порівнюйте розміри і якщо буде розходження - видавайте #error.
Я б його взагалі через switch писав би - і очевидніше, і якщо хтось чомусь змінить порядок оголошення змінних, то нічого не зміниться в клієнтському коді.
Сторінки 1
Для відправлення відповіді ви повинні увійти або зареєструватися