Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options
 
PerlMonks  

Re: C code pre-processor

by roboticus (Canon)
on Feb 03, 2012 at 20:46 UTC ( #951711=note: print w/ replies, xml ) Need Help??


in reply to C code pre-processor

dgsmith_50:

The following definitely doesn't do everything you want, as it's a quick knockup. It'll need some tuning, but I think you can tweak it into something useful for you:

$ cat C_preprocessor_light.pl #!/usr/bin/perl # # see perlmonks 951682 # use strict; use warnings; my %DEF; my @fl_print = (1); while (<DATA>) { if (/^\s*#\s*define\s+(\w+)/) { $DEF{$1}=1; } elsif (/^\s*#\s*undef\s+(\w+)/) { delete $DEF{$1}; } elsif (/^\s*#\s*ifdef\s+(\w+)/) { push @fl_print, (exists($DEF{$1}) and $fl_print[-1]); } elsif (/^\s*#\s*ifndef\s+(\w+)/){ push @fl_print, (!exists($DEF{$1}) and $fl_print[-1]); } elsif (/^\s*#\s*endif/){ pop @fl_print if @fl_print > 1; } print if ($fl_print[-1]); } __DATA__ /* Foo */ #ifndef BLARG2 BAR #define BLARG #define GRAK zippy #ifdef BLARG happy #ifndef GRAK lucky #endif puppy #endif #foo #endif bloink

It doesn't hide exactly the lines I would want to hide, but it's close...

...roboticus

When your only tool is a hammer, all problems look like your thumb.


Comment on Re: C code pre-processor
Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://951711]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others avoiding work at the Monastery: (6)
As of 2014-08-30 14:38 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The best computer themed movie is:











    Results (293 votes), past polls