Jak uruchomić preprocesor tylko w lokalnych nagłówkach?
Chcę, aby preprocesor odczytał zawartość nagłówków lokalnych, ale zignoruj dołączone nagłówki systemowe. Innymi słowy, jak sprawić, aby preprocesor pomijał dyrektywy preprocesowania w postaci:
#include <h-char-sequence> new-line
ale nadal przetwarzaj dyrektywy w formie:
#include "q-char-sequence" new-line
Jako przykład kodu obserwuj następujący plik:
#include <iostream> //system
#include "class_a.hpp" //local
#include <string> //system
#include "class_b.hpp" //local
int main() {}
jak mogę uzyskać wyjście preprocesora:
#include <iostream>
class A{};
#include <string>
class B{};
int main() {}
Lokalne pliki dołączane mogą zawierać inne lokalne pliki dołączania, a preprocesor wprowadziłby je rekurencyjnie; tak jak zwykle. Nadal drukowałby wszystkie nagłówki plików systemowych, ale nie wprowadziłby ich zawartości.
na gcc moje wywołanie wygląda tak do tej pory:g++ -E -P main.cpp
, gdzie-E
zatrzymuje się po wstępnym przetworzeniu i-P
wyklucza generowanie znaczników linii.
Nie mogę znaleźć flagi, która wyklucza przetwarzanie nagłówków systemowych.