Вы можете легко адаптировать этот ответ в связанном вопросе к C для достижения исходной цели ( живой пример ):
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/preprocessor/punctuation/comma_if.hpp>
#define GET_CH(s, i) ((i) >= sizeof(s) ? '\0' : (s)[i])
#define STRING_TO_CHARS_EXTRACT(z, n, data) \
BOOST_PP_COMMA_IF(n) GET_CH(data, n)
#define STRING_TO_CHARS(STRLEN, STR) \
BOOST_PP_REPEAT(STRLEN, STRING_TO_CHARS_EXTRACT, STR)
char string[] = {STRING_TO_CHARS(12, "FlyOffLedge")};
Я не знаюЯ не думаю, что в Си можно обрабатывать длину автоматически.
Если все, что вам нужно, это вопрос, который задают, вы можете использовать трюк, как в ответе Джастина, чтобы получить первый символ каждого строкового символа без использованиясимвольный буквенный синтаксис ( аналогичный живой пример ).