как решить проблему с заголовком - PullRequest
3 голосов
/ 20 февраля 2020

У меня следующая проблема: Мой код использует два внешних пакета

  • 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, который также автоматически изменяет включения.

...