Я использую m4 в своем коде на Фортране для генерации определенного кода на основе флагов, определенных в моем файле параметров.
Я очень мало знаю о предварительной обработке и, следовательно, не очень хорошо знаю M4. Я пытаюсь написать код, в котором мне нужно определить вещи на основе трех случаев: изотермический, баротропный, ни один из них. Я написал следующий код:
#ifdef isothermal
do something (1)
#elif barotropic
do something (2)
#else
do something (3)
#endif
Теперь, когда я компилирую код, он отлично компилируется с изотермическим [сделать что-то (1)] и (без определения изотермического и баротропного) [сделать что-то (3)]. Но когда я определяю баротропный, оно возвращается к [сделать что-то (3)] вместо [сделать что-то (2)].
Любые указатели на то, как справиться с такой ситуацией в m4?
Спасибо!