Я хочу ответить под другим углом. А именно, если вы чувствуете необходимость сравнивать директивы препроцессора, вы, возможно, думаете о scilab и октаве все неправильно. Директивы препроцессора необходимы в C и C ++ потому, что это скомпилированные языки. Директивы препроцессора вносят изменения в фактический код, который будет скомпилирован, прежде чем произойдет компиляция.
В интерпретируемом языке, таком как matlab, scilab и octave, такие вещи избыточны. Таким образом, простой блок if / else, выполняющий тест, который адекватно различает три среды, должен быть адекватным.
Руководство по октаве предлагает способ различения октавы и matlab , который не влечет за собой значительных потерь производительности. У меня не установлен scilab для обеспечения эквивалентного теста, но я уверен, что для scilab также существует простой тест.
Таким образом, в контексте запуска другого кода путем определения правильной среды это вполне возможно.
В контексте имитации стратегии #include, поскольку скрипт запускается последовательно, вы можете реализовать блок 'if / else', который просто запускает другой базовый скрипт в нужный момент.
PS. Matlab внес некоторые изменения в способ интерпретации сценариев, поэтому это может привести к проблемам, если он выполняет «вложенную» проверку ошибок, а не поверхностную проверку ошибок. Но даже если это произойдет, просто вместо непосредственного вызова сценария можно использовать синтаксис run filename
или, в худшем случае, использовать для вызова сценария eval
.