ecpg: issue related to preprocessor directives
От | Ashutosh Sharma |
---|---|
Тема | ecpg: issue related to preprocessor directives |
Дата | |
Msg-id | CAE9k0P=dQk9X0cU2tN49S7a9tv733-e1pVdpB1P-pWJ5PdTktg@mail.gmail.com обсуждение исходный текст |
Ответы |
Re: ecpg: issue related to preprocessor directives
|
Список | pgsql-interfaces |
Hi All,
When the following ecpg program having preprocessor directives is compiled, the output produced is not correct.
/* test program */
exec sql define itype 1;
int main(void)
{
exec sql begin declare section;
exec sql ifdef itype;
int var1;
exec sql elif ntype;
numeric var1;
exec sql else;
float var1;
exec sql endif;
exec sql end declare section;
}
Here is the output produced by th ecpg pre-compiler when above program is compiled:
int main(void)
{
/* exec sql begin declare section */
#line 8 "2.pgc"
int var1 ;
#line 12 "2.pgc"
float var1 ;
/* exec sql end declare section */
#line 14 "2.pgc"
}
As seen from above output, both exec sql ifdef and exec sql else block got compiled which is wrong. If the above output is further compiled using gcc compiler, the compilation would fail.
When the following ecpg program having preprocessor directives is compiled, the output produced is not correct.
/* test program */
exec sql define itype 1;
int main(void)
{
exec sql begin declare section;
exec sql ifdef itype;
int var1;
exec sql elif ntype;
numeric var1;
exec sql else;
float var1;
exec sql endif;
exec sql end declare section;
}
Here is the output produced by th ecpg pre-compiler when above program is compiled:
int main(void)
{
/* exec sql begin declare section */
#line 8 "2.pgc"
int var1 ;
#line 12 "2.pgc"
float var1 ;
/* exec sql end declare section */
#line 14 "2.pgc"
}
As seen from above output, both exec sql ifdef and exec sql else block got compiled which is wrong. If the above output is further compiled using gcc compiler, the compilation would fail.
В списке pgsql-interfaces по дате отправления: