Я хочу, чтобы препроцессор читал в составе локальных заголовков, но игнорировал включения заголовков системы. Иначе говоря, как я могу заставить препроцессор пропустить препроцессорные директивы формы:
#include <h-char-sequence> new-line
но все же обрабатывают директивы формы:
#include "q-char-sequence" new-line
В качестве примера кода обратите внимание на следующий файл:
#include <iostream> //system
#include "class_a.hpp" //local
#include <string> //system
#include "class_b.hpp" //local
int main() {}
как я могу получить вывод препроцессора:
#include <iostream>
class A{};
#include <string>
class B{};
int main() {}
Локальные файлы включают в себя другие локальные файлы include, и препроцессор рекурсивно выводит их все; как обычно. Он все равно будет печатать все заголовки системных файлов, но это не приведет к их содержимому.
В gcc мой вызов выглядит так: g++ -E -P main.cpp
, где -E
останавливается после предварительной обработки, а -P
исключает генерацию маркеров строки.
Я не могу найти флаг, исключающий обработку заголовков системы.