如何防止gcc对shebang行进行预处理?

时间:2019-03-23 18:45:00

标签: c++ bash gcc

我正在构建一个类似于解释器的bash shell脚本,以从命令行轻松运行C ++文件。您可以在此处查看源代码:https://github.com/binarez/xcpp/blob/master/xcpp.sh。我的系统使用的源文件是.xcpp,只是为了区别于常规cpp文件。

一切正常,除了当我尝试从另一个xcpp文件中包含一个xcpp文件时:gcc预处理程序试图解释#!,这是我用来启动bash脚本的shebang行的开头当我运行xcpp文件时。

请注意,它可以在“主”文件上使用,因为在将其泵送到gcc之前,我使用sed跳过了shebang行,但在#include的文件上却无法使用,因为我没有运行的机会在预处理程序处理之前,先对包含的文件进行加密。

“主”脚本test.xcpp的示例:

#!./xcpp.sh

#include "module.xcpp"

int test( strings & args )
{
    module( args );
    return 0;
}

module.xcpp的示例:

#!./xcpp.sh

int module( strings & args )
{
    for( string & arg : args )
    {
        println(arg);
    }
    return 0;
}

使用此系统,您只需chmod + x test.xcpp并使用./test.xcpp

运行

我希望还可以将module.xcpp作为“主要”脚本运行,并在其他xcpp脚本中使用它。我正在使用gcc。我该如何运作?

我得到的错误:

module.xcpp:1:2: error: invalid preprocessing directive #!
 #!xcpp.sh

0 个答案:

没有答案