Целью является размещение большого массива постоянных данных в разделе .rodata
, позволяющем получить доступ к нему из других единиц перевода. Насколько я знаю, GCC помещает данные в раздел только для чтения, если объявлено как static const
. Но тогда невозможно объявить его extern
в других файлах. Для нестатической массива я хотел бы сделать что-то вроде: data.c
будет содержать:Размещение глобального постоянного массива в разделе .rodata.
const int data[] = {0,1,2,....}
и data.h
будет содержать:
extern const int data[];
Это позволит любой файл, включая data.h
«видеть» эти данные. Но как бы один сделать по этому поводу:
static const int data[] = {0,1,2,....}
Конечно, я могу определить целевой раздел в явном виде, используя __attribute __((section("name"))
, но я предпочитаю, чтобы избежать такого интенсивного использования артиллерии. Итак, какой самый переносимый и подходящий способ сделать требуемый?
Ну, 'rodata' не обязательно. Идея заключается в использовании памяти программ, а не памяти данных (встроенная система, ограниченная память, но большая FLASH ...). Но мне нравится твоя идея. Это просто. Я должен был хотя об этом сам :) Спасибо. –