Как использовать cpp (c препроцессором) с include path - PullRequest
0 голосов
/ 19 марта 2011

Я пишу парсер, который работает с исходными файлами C / C ++. В качестве 1-го этапа парсера мне нужно использовать какой-то уже доступный препроцессор, чтобы я мог обойтись без таких директив, как #define, #ifdef. Для g ++ доступным инструментом является 'cpp' (или g++ -E ...). У меня было 2 вопроса:

  1. Мой анализатор написан на C ++, так что может быть лучшим способом запустить этот 'cpp' на других исходных файлах C / C ++? Это что-то вроде:

    system("cpp sourceFile.cpp parsed_sourceFile.cpp"); // just a pseudo code
    

    Или есть способ получше?

    (Я хочу знать только возможные способы, с помощью которых я могу выполнить предварительную обработку данных файлов. Являются ли эти команды, например, system(), или popen() стандартным способом сделать это?)

  2. Как я могу позаботиться о нестандартных включенных файлах внутри исходных файлов? Я не буду ничего знать о том, в каком месте хранятся эти пользовательские заголовочные файлы.

1 Ответ

0 голосов
/ 19 марта 2011

система - самый кроссплатформенный способ.Но если ваш код является одноплатформенным, вы можете лучше контролировать выполнение подпрограмм, используя собственный API платформы.Как и ShellExecute в Windows.

Существует множество мест, где могут находиться нестандартные включаемые файлы, например, в той же директории, что и исходный скрипт.Такие каталоги обычно упоминаются в проекте и файле MAK проектов.Вы можете открыть эти файлы и искать дополнительные места, упомянутые в них.Но проще;) конечно, спросить самого пользователя, где находятся эти включаемые файлы.

...