Препроцессор C не достаточно умен, чтобы делать это самостоятельно.Если вас интересует только #include
, вам нужно просто запустить свой собственный инструмент (скажем, в Perl) для обработки исходных файлов, расширяя #include
интересующие вас строки и игнорируя остальные.
Этот скрипт ставит префикс неинтересных строк заголовка с // Ignored
:
#!/usr/bin/perl
use warnings;
use strict;
my @uninteresting = qw(iostream vector map);
my $uninteresting = join '|', @uninteresting;
while (<>) {
s%(#include <(?:$uninteresting)>)%// Ignored $1%;
print;
}
Теперь вы можете сделать:
cat sourcefile.cpp | perl ignore-meh.pl | g++ -E
А если вы хотите по-настоящему вычурно:
#!/usr/bin/perl
use warnings;
use strict;
while (<>) {
s%// Ignored (#include <[^>]+>)%$1%;
print;
}
Теперь вы можете сделать:
cat sourcefile.cpp | perl ignore-meh.pl | g++ -E | perl restore-meh.pl