0

明天我有一个公司的测试。我的文件必须易于使用 Coliru(网络编译器)编译:http ://coliru.stacked-crooked.com/

但这是我的问题:“如何在 Coliru 中使用多个文件?” 我阅读了问答,但没有成功。

这是我想测试的程序:

#include <stdlib.h>
#include <stdio.h>

//MyLibraries
#include "Addition.c"
int main(int argc, char * argv[])
{

    Addition();

    return EXIT_SUCCESS;
}

这是我的“Addition.c”文件:

#include <stdio.h>
#include <stdlib.h>

void Addition(int a, int b);

void Addition(int a, int b)
{
    printf("%d", (a + b));
}

如果有人可以向我解释如何使用 Coliru 编译多个文件,那就太棒了。谢谢

4

1 回答 1

0

Coliru 问题跟踪器中有这条评论建议采用以下方式。

  • 选择包含文件名的标题,例如==> Makefile <==
  • 将此类标头放入每个文件中
  • 连接文件
  • 将生成的代码(假定main.cpp由 Coliru 输入)放入源字段后,使用以下构建命令(我将其复制到此处,并附上链接中的注释,以供注明出处):
# Here is a cool technique to use Coliru for small "Makefile projects":
# (No need to say "thanks" but if you feel inclined: coliru [at] tbfe.de)
pr -ti main.cpp|awk '/==> [^ ]+ <==/ {f=$2;next} {print>>f}' && make

这个脚本是如何工作的:

  • pr -ti将 8 个字符转换为制表符(为了在Makefile语法上有效)
  • awk ...找到标题行,从中提取文件名,然后将所有内容写入相应的文件中,直到下一个标题
  • make只需处理生成的文件集。

如何将您的项目转换为这种格式:

for file in *; do printf "==> $file <==\n" >> main.cpp; cat "$file" >> main.cpp; done

注意:确保您的项目没有名为 的文件main.cpp,否则您需要调整构建脚本(和生成器脚本)。

现场示例取自上面的同一链接。

于 2020-11-25T20:51:53.920 回答