是否可以在不编译的情况下包含.c文件中的函数?

时间:2013-05-10 23:46:49

标签: c gcc include

我受限于非常具体(而且相当无意义......)的归档系统,我无法创建头文件或将现有文件拆分为仅包含函数和仅执行调用的文件。我只能创建可以执行并具有某种输出的.c文件。

许多代码都可以重用,但我被迫将一些函数从一个文件复制到另一个文件。

是否可以通过包含但不编译一个或多个文件或省略包含文件中的某些功能来解决这个问题?也许在混合中添加一些调试可以只编译部分包含的文件?

2 个答案:

答案 0 :(得分:2)

将这样的共享代码放在一起,这样它就可以自己编译,同时你可以将其包含在其他.c文件中,而不会产生重复的主要功能:

 // shared.c
 #ifndef SHARED_C
 #define SHARED_C

 #if __INCLUDE_LEVEL__ == 0
 #    include <stdio.h>
 #    include <stdlib.h>
 int main() { 
     fprintf(stderr, "shared file, not to run!\n");
     return EXIT_FAILURE;
 }

 #endif


 int shared_func() { return 1; }

 #endif

并从其他文件中使用

#include "shared.c"
int x = shared_func();

答案 1 :(得分:0)

您可以使用预处理器吗?类似的东西:

// this is file1.c
int Foo(int bar);
#ifndef HEADERS
int Foo(int bar)
{
    return 42;
}
#endif

// this is file2.c
#define HEADERS
#include "file1.c"

Foo(42);