5-13在code blocks里面怎么编译啊

来源:5-13 内部函数与外部函数

慕妹0983297

2017-07-19 17:49

我用的code blocks,建立工程有一个main.c然后我又添加一个.c文件命名为test.c,把慕课网上的hello.c的内容复制到main.c,把test.c复制到test.c编译提示2个错误   

E:\C语言学习练习\外部函数\test.c|2|multiple definition of `say'|

obj\Debug\main.o:E:\C语言学习练习\外部函数\test.c|2|first defined here|http://img.mukewang.com/596f2b0400016d9913660736.jpg

http://img.mukewang.com/596f2b1f0001352a13660736.jpg

http://img.mukewang.com/596f2b1f00016d9913660736.jpg


写回答 关注

1回答

  • ZainIoT_MK
    2017-07-20 16:12:05

    这样用的话,你应该建立test.h的头文件,而不是  .c 结尾的C语言文件,自定义头文件的格式入下:

    /*test.h*/
    
    #ifndef _TSET_H_                      //第3、4和最后一行(24),是固定格式,  _TSET_H_  是 test.h 头文件固定形式
    #define _TEST_H_
    
    #include <stdio.h>
    
    extern void say();                    //头问价里的全局函数定义格式
    void printLine();                     //头文件内部函数定义,(注:该函数前面可以用extern,不影响运行结果)
    
    void printLine()                      //函数内容
    {
       printf("**************\n");
    }
    
    void say(){
        printLine();
        printf("I love imooc\n");
        printf("good good study!\n");
        printf("day day up!\n");
        printLine();
    }
    
    #endif
    /*main.c*/
    
    #include <stdio.h>
    #include "test.h"   //引用 test.h 头文件
    
    int main()
    {
        say();           //调用头文件里的全局函数
        return 0;
    }

    下面是编译运行的结果

    http://img.mukewang.com/5970659e000171a012230639.jpg

    不知道是否达到你心中的效果;

    如果还有疑问,可以联系我哦~

    慕妹0983...

    原题目中是在hello.c中调用了say(),在test.c中调用了printline(),但是你这样写就只在main.c中调用了say(),如果按照原题目中两个.c文件(也就是说建立test.c结尾的文件,引用test.c文件而不是引用test.h文件),该怎么写呢?

    2017-07-26 22:11:18

    共 1 条回复 >

C语言入门

C语言入门视频教程,带你进入编程世界的必修课-C语言

926026 学习 · 20793 问题

查看课程

相似问题