Chinaunix

标题: 天气热,头晕了,c语言的头文件问题包含求助 [打印本页]

作者: hsum    时间: 2010-05-04 18:01
标题: 天气热,头晕了,c语言的头文件问题包含求助
三个文件,分别是:

a.h

  1. #ifndef _A_H
  2. #define _A_H

  3. int a;
  4. void p();

  5. #endif
复制代码
a.c

  1. #include "a.h"
  2. #include <stdio.h>

  3. void p()
  4. {
  5.         a=6;
  6.         printf("a=%d\n",a);
  7. }
复制代码
main.c

  1. #include "a.h"

  2. int main()
  3. {
  4.         p();
  5.         return 0;
  6. }
复制代码
很简单的程序,a.h中申明了一个全局变量a,和一个函数p(),然后在a.c中具体实现了这个函数,然后在main.c中调用p(),可是gcc编译出现下面的错误:
  1. /tmp/ccorq0yv.o: In function `main':
  2. main.c:(.text+0x7): undefined reference to `p'
  3. collect2: ld returned 1 exit status
复制代码
怎么回事??
作者: lenovo    时间: 2010-05-04 18:10
编译命令?
作者: hsum    时间: 2010-05-04 18:17
gcc main.c -o main
作者: lenovo    时间: 2010-05-04 18:18
a.c你都没有链接进来。
gcc -omain main.c a.c
作者: hsum    时间: 2010-05-04 18:19
晕,我用gcc main.c a.h a.c -o main就可以了

可是我以前用gcc main.c -o main就可以阿,晕死了
作者: lenovo    时间: 2010-05-04 18:42
可是我以前用gcc main.c -o main就可以阿,晕死了
hsum 发表于 2010-05-04 18:19

不信。
作者: supersuper8    时间: 2010-05-04 19:21
本帖最后由 supersuper8 于 2010-05-04 19:22 编辑
三个文件,分别是:

a.ha.cmain.c很简单的程序,a.h中申明了一个全局变量a,和一个函数p(),然后在a.c中具体 ...
hsum 发表于 2010-05-04 18:01



   

a.h

  1. #ifndef _A_H
  2. #define  _A_H

  3. #include <stdio.h>

  4. int a;
  5. void p();

  6. #endif
复制代码
main.c

  1. #include "a.h"

  2. extern int a;
  3. extern void p();

  4. int main(void) {
  5.     p();
  6. }
复制代码
gcc -o main main.c a.c


跟天氣沒有關係。 跟你的基本知識掌握和iq有關係。
謝謝。

BTW : 像你這個print來講 定一個全局的int 是沒有意義的。
作者: ubuntuer    时间: 2010-05-04 19:22
晕,我用gcc main.c a.h a.c -o main就可以了

可是我以前用gcc main.c -o main就可以阿,晕死了
hsum 发表于 2010-05-04 18:19



    那估计是你以前只有main.c和a.h xx.h
    了解下编译和链接
作者: supersuper8    时间: 2010-05-04 19:24
還有繼續發

a.c

  1. void p() {
  2.     a = 8;
  3.     printf("a = %d \n", a);
  4. }
复制代码
看下我的a.h和a.c的意義。。。

你理解不了那我就説不了什麽了。
作者: supersuper8    时间: 2010-05-04 19:25
那估计是你以前只有main.c和a.h xx.h
    了解下编译和链接
ubuntuer 发表于 2010-05-04 19:22



   

哥, 你的專家積分怎麽來的?

extern的問題 關gcc什麽事情呢????????
作者: ubuntuer    时间: 2010-05-04 19:29
我有说关gcc事???

作者: ahui886    时间: 2010-05-05 08:29
可是我以前用gcc main.c -o main就可以阿,晕死了
hsum 发表于 2010-05-04 18:19



你确信你是多个c文件的程序吗?并且没有在main.c中出现诸如:
#include <xx.c>的混乱语法,如果是的话,只能说我很想膜拜下你的gcc,我不信gcc能自动把xx.c链接进来,太神奇了
作者: t3gonline    时间: 2010-05-05 14:31
学习了
作者: xyloveyy    时间: 2010-05-05 15:48
提示: 作者被禁止或删除 内容自动屏蔽




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2