Mail Archives: djgpp/1997/10/17/05:29:16
At 22.27 1997-10-16 -0700, you wrote:
>Peter Palotas wrote:
>>
>> Is there some way to make CPP (the macro preprocessor) not include files
>> from included files? i.e. if there's a line #include "file1.h" in the file
>
>
>Oh my. That's a bit hard to decypher. Do you mean something like this:
Okay... Let's get this straight then... If I have a file:
-------------- file.c -----------------
#ifndef __MY_HEADER__
#define __MY_HEADER__
#include <stdio.h>
#include <stdlib.h>
#ifdef _INCLUDE_MY_DOS_H_
#include "mydos.h"
#endif
#include "file.h"
int main(void)
{
return 0;
};
-------------- mydos.h ----------------
#include <stdlib.h>
#include "file2.h"
void my_func(void);
-------------- file.h -----------------
#include <string.h>
int my_func_again(void);
int this_was_no_fun_writing(void);
------------- file2.h -----------------
/* This is file2.h I'm really too lazy */
/* to write any code here, so this will */
/* have to be sufficient! */
Okay... Now what I would prefer the output to be (if _INCLUDE_MYDOS_H_ was
defined) would be the following:
------------- desired output ----------
#ifndef __MY_HEADER__
#define __MY_HEADER__
#include <stdio.h>
#include <stdlib.h>
#ifdef _INCLUDE_MY_DOS_H_
#include <stdlib.h>
/* This is file2.h I'm really too lazy */
/* to write any code here, so this will */
/* have to be sufficient! */
void my_func(void);
#endif
#include <string.h>
int my_func_again(void);
int this_was_no_fun_writing(void);
int main(void)
{
return 0;
};
And I actually managed to solve this problem too, in a somewhat ugly way
maybe, by writing an AWK program (actually two of them) that took care of
the includes (it is called recursively, so I guess it uses a lot of
memory), and then calling CPP which would only do what I wanted it to do
since all the other #defines and stuff were commented out by the first AWK
program, and the second AWK program would only uncomment all these
#preprocessor-statements.
-- Peter Palotas alias Blizzar -- blizzar AT hem1 DOT passagen DOT se --
*****************************************************
* A brief description of DJGPP: *
* NEVER BEFORE HAS SO FEW DONE SO MUCH FOR SO MANY! *
*****************************************************
- Raw text -