Массивы в M4
Массивов, как таковых, в препроцессоре M4 нет. Ну на самом деле, зачем массивы в препроцессоре? Однако несложный макрос позволяет их реализовать самостоятельно. Даже ассоциативные.
define(`array', `defn(format(``array[%d]'', `$1'))') define(`array_set', `define(format(``array[%d]'', `$1'), `$2')')
Пробуем:
dnl Записываем в массив число 4 по индексу 4 и число 17 по индексу 17
array_set(`4', `array element no. 4') array_set(`17', `array element no. 17') dnl Получаем значения
array(`4') array(eval(`10 + 7'))
Если вместо классического массива хочется иметь ассоциативный - можно поменять ‘%d’ на ‘%s’.
См. также