是否可以使 C 预处理器调用外部脚本

Is it possible to make C preprocessor to call external scripts

是否可以让C预处理器(cpp)调用外部脚本?例如:

$ ./snmp 
C3750
$ cat test
switch model:
#script snmp /* starts an external bash script named snmp */
$ cpp -P < test


switch model:
C3750
$ 

您可以自由编写 Makefile 或其他调用脚本的自动构建系统;您可以使用 -D 选项(对于 gcc/clang/etc.)或等效选项将脚本中的信息提供给源文件。但是预处理器本身独立于任何操作系统接口,除了为 #include 指令读取文件。

例如,您可以使用以下内容编译您的程序:

gcc -DSWITCH_MODEL="$(./snmp)" test.c -o test

(当然,您可能还需要其他选项)。这将导致预处理器变量 SWITCH_MODEL#define 作为 C3750(假设这是 snmp 脚本的输出)。