是否可以将.c文件包含在另一个.c文件中?

RRR*_*RRR 0 c struct include

例如:

file1.c 具有:

static const struct 
{ 
   int a;
   int b;
   int c;
} mystruct = { 1, 2, 3};
Run Code Online (Sandbox Code Playgroud)

file2.c 具有:

#include <stdio.h>
#include "file1.c"
Run Code Online (Sandbox Code Playgroud)

等等.

这样可以吗?

Ree*_*sey 7

这样可以吗?请告诉我.谢谢.

这在技术上会起作用,但我不推荐它.相反,我建议将你的声明放在头文件中,然后在你的project/makefile/etc中包含两个.c文件.

这将是一种"标准"工作方式,这反过来又使您的项目更易于维护.


Squ*_*ree 5

是的,只要你有良好的动机就可以。例如,它可以帮助您避免源代码重复(即使您仍然会在二进制级别获得重复),或者它可以允许您使用机器生成的代码片段(例如由单独的编译器生成的解析器) )。您甚至可能在某些平台上获得一些性能或占用空间的改进,因为编译器可以选择更优化的指令(例如,在file1.c包含代码的情况下相对的本地调用),如果是单独的翻译单元,则这是不可能的file1.c

如果你的动机不够好,就应该避免,因为它可能会在一些方面造成麻烦。我想到的一些是:

  • 您的构建系统可能不够智能,无法检测到对file1.c
  • 您的编辑器或开发环境可能不够智能,无法从中查找符号file1.c
  • file1.c如果不是您在其中定义的所有符号都具有内部链接,则可能会导致链接错误。