所以我想承诺在源文件中包含源文件。
基本上我正在构建一个通用的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的第一行收到错误。“预期声明”。
我有两个问题。
我没有直接使用#including源文件,我的印象是它只是用文件内容替换#include语句。
更新:之前我没有提到我在Eclipse环境中试图这样做。
当我使用Eclipse'build'命令时,projectloop.c文件就是在它自己构建的。
右键单击Eclipse项目浏览器中的projectloop.c,我可以选择“从构建中排除”
答案 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;
}