Я хочу заполнить многомерный массив с помощью макроса, чтобы люди, использующие его, думали, что они используют функцию и передают только одну строку. Макрос будет использовать эту строку и во время компиляции преобразует ее, чтобы она выглядела как многомерный массив, например:
make_array ("string1,{string2,{string3,{...,{stringN");
Таким образом, макрос заменит эту функцию на многомерный массив и обрежет эту строку, где бы он ни встречался ,{
. Код выше будет выглядеть примерно так:
make_array = { "string1", "string2", "string3", ..., "stringN"};
Я использую GCC; как я могу это сделать?
Обновление: я думал, что мог бы исключить кавычки строки, используя макрос, поэтому у меня была бы строка без текста, и я мог бы редактировать строку в макросе, но GCC не принимает объявление макроса для замены двойных кавычек (как показано ниже).
#define macro_array ( "text") text
Таким образом, текст будет отображаться без двойных кавычек, и я мог бы найти отметку ,{
, обрезать ее и использовать затем stringify, чтобы повернуть строку назад.