包括源文件

时间:2015-03-06 22:47:18

标签: c

所以我想承诺在源文件中包含源文件。

基本上我正在构建一个通用的main.c文件,它将成为我在这个平台上创建的任何项目的基础。

投射main.c文件唯一真正区别的项目是主函数本身。

我想要做的是创建另一个文件projectloop.c,并将该文件包含在main函数的位置。使其表现得像文本插入。

//main.c:
#include "main.h"
...// includes
...// standard functions

int main(void) {
   ...// standard configuration

   #include "projectloop.c"
}

但是我不知道我可以把它放在projectloop.c文件中以使其编译。

我希望它像

一样简单
//projectloop.c:
while(1) {
    // do my project loop
    ledOn();
    delay();
    ledOff();
    delay();
}

但这不会构建。

我在projectloop.c的第一行收到错误。“预期声明”。

我有两个问题。

  1. 我可以按照我尝试的方式直接插入文本吗?
  2. 有没有充分的理由不以这种方式构建我的代码?
  3. 我没有直接使用#including源文件,我的印象是它只是用文件内容替换#include语句。


    更新:之前我没有提到我在Eclipse环境中试图这样做。

    当我使用Eclipse'build'命令时,projectloop.c文件就是在它自己构建的。

    右键单击Eclipse项目浏览器中的projectloop.c,我可以选择“从构建中排除”

2 个答案:

答案 0 :(得分:0)

据我所知(或记得),标准 C 没有将 .c .h 文件设为模板的功能因为这是你需要的,一个 template.c 文件,它可以根据参数生成多个不同的源。

使用自定义脚本(即使是bash script using sed)也许是最好的选择。

例如

main.c.tpl 文件

//main.c:
#include "main.h"
...// includes
...// standard functions

int main(void) {
   ...// standard configuration

   %%MAIN_CODE%%
}

然后使用该脚本读取 main.c.tpl 文件,并将%% MAIN_CODE %%标记替换为来自其他文件(或其他)的任何文本或源代码,并将输出转储到实际编译的实际 main.c 文件

答案 1 :(得分:0)

我从来没有见过这样做过。

通常人们会将int argc, char* argv[]从main传递到他们自己的代码模块中,在那里发生所有魔法。

#include "myModule.h"

int main(int argc, char * argv[]) {

    myModule(argc, argv);    

    return 0;
}