Недавно я работал над некоторыми встроенными устройствами, где у нас есть некоторые структуры и союзы, которые нужно инициализировать во время компиляции, чтобы мы могли хранить определенные вещи во флеш-памяти или ПЗУ, которые не нужно изменять, и сохраните небольшую вспышку или SRAM с небольшими затратами на производительность. В настоящее время код компилируется как действительный C99, но без этой настройки он также использовался для компиляции как кода на С++, и было бы здорово поддерживать то, что было скомпилировано таким же образом. Одна из ключевых моментов, которые мешают этому, заключается в том, что мы используем назначенные инициализаторы C99, которые не работают в подмножестве C на С++. Я не очень похож на С++, поэтому мне интересно, какие простые способы могут произойти в С++ или С++, которые до сих пор разрешают инициализацию во время компиляции, чтобы структуры и объединения не нуждались в инициализируется после запуска программы в SRAM.
Еще одна заметка: ключевая причина для использования назначенного инициализатора - инициализация как НЕ первого члена союза. Кроме того, придерживаться стандартного С++ или ANSI C является плюсом, чтобы поддерживать совместимость с другими компиляторами (я знаю о расширениях GNU, которые предоставляют что-то вроде назначенных инициализаторов без C99).