У меня следующая проблема: Мой код использует два внешних пакета
- EIGEN (только заголовки)
- IAU SOFA (stati c библиотека + заголовки)
Если я напишу следующий код:
#include "sofa.h"
#include "Eigen/Dense"
Я получу следующие сообщения об ошибках:
/some_path/sofam.h:85:18: error: expected unqualified-id before numeric constant #define DAYSEC ( 86400.0 ) ...
и многие другие строки ошибок.
Однако, если я изменяю порядок включений, он компилируется:
#include "Eigen/Dense"
#include "sofa.h"
работает нормально.
В чем причина проблемы?
Моя главная проблема в том, что я не знаю, как называется это поведение, поэтому я не могу по-настоящему эффективно гуглить. Нельзя изменить исходный код SOFA EIGEN или IAU (так как они поддерживаются другими группами, и мы регулярно обновляем их со своей веб-страницы)
Это также не просто исправить один раз и никогда не трогай это снова. Порядок наших заголовочных файлов автоматически перестраивается в алфавитном порядке c, что приводит к путанице во всех случаях, когда мы фиксируем какие-либо изменения, и мы регулярно используем алгоритм optimize imports
, который также автоматически изменяет включения.