ProC中常见的是使用宏来管理常用的数据库操作命令. 比如:
#define GetName() EXEC SQL select name /
from TBL_MEMBER
from TBL_MEMBER
这样定义了宏, 在以后的代码中可以直接用GetName()来实现这几行SQL语句的操作了.
但是, 这产生了一个问题:
宏的替换是在gcc的编译期中的预处理期进行的, 而ProC的预处理需要在gcc的编译期之前, 但ProC却不能识别宏.
这该怎么办呢?
这就需要我们手动调用gcc的预处理命令进行宏替换, 然后进行ProC的预处理, 最后再用gcc的编译.
1. gcc的预处理命令:这会生成一个main.c的文件, 是ProC的预处理结果文件.
gcc -E -nostdinc -x c main.qc > main.pc
其中:
- -E: 预处理参数
- -x: 指明文件中使用的语言是C语言
- -nostdinc: 忽略系统头文件, 因为前一个版本出现了包含系统头文件的问题.
由于预处理的默认输出为stdout, 我们需要重定向到文件中, 即main.pc.
2. ProC的预处理命令:
proc main.pc
3. gcc的编译命令:
gcc main.c