Нужно инициализировать массив таких структур нулями, кроме тех, что подписаны изначально. Что то вроде:
spisok_frame sf[0x800];
Или любая друга концепция, под условия - весь код должен просто пиинклюден в проект(stm32). поле ID “живое” , а name будет статично в момент сборки и указывать на строки которые должны лежать в .rodata.
name объявлены не все и не идут по порядку( отсутствующие указатели указывают на 0). строки с name должны быть в заголовочном файле а не в теле программы. Как инициализировать массив в теле программы или через extern пофигу.
не совсем понятно чего вы хотите добиться. у вас изначально часть массива spisok_frame sf[0x800]; уже чем то проинциализирована(на стадии компиляции?) и вы хотите остальное “залить” нулями ?
можете как то графически нарисовать что у вас в массиве есть , и чего хотите добиться ?
нет, мне нужно объявить этот массив, где некоторые name из него будут указывать на строки в .rodata остальные будут нулями, по ходу программы name манятся не будут. а id будут активно эксплуатироваться.
Какой-то лютый бред. Если используется слово extern, то значит переменная уже где-то объявлена и никакая инициализация не допускается. Она уже инициализирована (или нет) там, где объявлена.
А поточнее. Некоторые - это какие? Они все будут собраны в начале или где попало разбросаны?
Пока Вы внятно не расскажете о чём речь, ничего Вам сказать нельзя.
Мешает то, что некоторые должны иметь предопределённые на этапе компиляции значения, а не нули.
Да, и раз уж на то пошло, что правильнее добавить в структуру constexpr-конструктор, который всё проинициализирует во время компиляции, чем делать такую жестокую операцию во время исполнения.
Я скорее другого опасаюсь - что из-за выравнивания размер массива структур не будет в точности равен размеру единичной структуры, умноженной на число элементов…
Вот и я ж про то же. Это очень опасная (ни разу не data-safe) операция.
В ООП есть сильная концепция “инкапсуляции”: всё, что связано с экземплярами класса, должно делаться внутри класса, методами, которые “знают за устройство класса”, а не внешними процедурами.