oggplay 发表于 2014-8-5 15:32:17

以下源文件能通过编译链接么?????????


如果能,结果是什么,请给出理由,如果不能也请给出理由。(理由是重点)
这个程序源文件有2个文件组成,1.c和2.c。
/*********************1.c*******************/

#include <stdio.h>

void f(void);

int x=15213;
int y=15212;

int main()
{
f();
printf("x=0x%x y=0x%x \n",x,y);
return 0;
}
/*********************2.c*******************/

double x;

void f()
{

x=-0.0;

}

ling0 发表于 2014-8-5 17:15:09

不能。。。理由:1.c中的main函数需要调用2.c中的f函数,但1.c没有包含文件2.c...
在1中添加    #include “2.c”

oggplay 发表于 2014-8-5 17:20:40

本帖最后由 oggplay 于 2014-8-5 17:28 编辑

ling0 发表于 2014-8-5 17:15
不能。。。理由:1.c中的main函数需要调用2.c中的f函数,但1.c没有包含文件2.c...
在1中添加    #include...
如果我不想让别人看到我的2.c源文件怎么办,我的2.c假设已经编译完成了(成了2.o文件)。所以与include无关,

牡丹花下死做鬼 发表于 2014-8-5 18:36:03

应该不行
应为1.c中要引用2.c的函数但1.c中没有包括2.c

牡丹花下死做鬼 发表于 2014-8-5 18:36:46

oggplay 发表于 2014-8-5 17:20
如果我不想让别人看到我的2.c源文件怎么办,我的2.c假设已经编译完成了(成了2.o文件)。所以与include无关 ...

你可以吧2.c写出dll的样子然后再1.c中调用

oggplay 发表于 2014-8-5 19:17:15

牡丹花下死做鬼 发表于 2014-8-5 18:36
你可以吧2.c写出dll的样子然后再1.c中调用

刚才我想说的是思路方向错了

牡丹花下死做鬼 发表于 2014-8-5 19:19:47

oggplay 发表于 2014-8-5 19:17
刚才我想说的是思路方向错了

我是这么想的 不知道对不对
编译1.c的时候 f() 他找不到啊

oggplay 发表于 2014-8-5 19:22:16

本帖最后由 oggplay 于 2014-8-5 19:24 编辑

牡丹花下死做鬼 发表于 2014-8-5 19:19
我是这么想的 不知道对不对
编译1.c的时候 f() 他找不到啊
要编译可执行文件很简单的一个命令gcc -o 1 1.c 2.c,看内容,别看框架。难道VC系列没有这种编译多文件的选项或命令?虽然我不了解VC VS

千亩计者 发表于 2016-8-16 00:30:07

少了#include “2.c
页: [1]
查看完整版本: 以下源文件能通过编译链接么?????????