Предотвратить g ++ / clang ++ от принятия файлов, заканчивающихся открытыми скобками? - PullRequest
3 голосов
/ 15 марта 2020

Иногда, если у вас есть несоответствующие скобки в заголовочном файле, над которым вы работаете, вы можете получить странные ошибки в других, совершенно правильных файлах. Например:

foo.hpp :

namespace foo {

/* etc. etc */

// } // whoops! no closing brace

main. cpp:

#include "foo.hpp"
#include "bar.hpp"

int main() { /* etc. */ }

компилятор, скорее всего, будет жаловаться на неправильные определения в bar.hpp.

Мой вопрос: могу ли я заставить компилятор заметить наличие открытых скобок на границе файла и предупредить или выдать ошибку в этом случае?

Примечания:

  • Эта проблема также частично актуальна и в C, но, возможно, в меньшей степени - там нет пространства имен.
  • Я спрашиваю о g ++ и clang ++, но вы можете упомянуть и другие компиляторы.
  • Я понимаю, что компилятор анализирует только предварительно обработанный C ++, но - который включает комментарии с исходными номерами строк файла, поэтому он может сказать, когда файл "заканчивается".
...