使用CodeBlocks IDE在C中使用未定义的引用错误

时间:2012-04-16 05:39:18

标签: c codeblocks

我只是在玩代码块并编写一个非常简单的程序,但是我得到了未定义的引用错误...我将完全相同的代码复制到其他地方并在终端中编译它并且工作正常但是只是没有在代码块中工作。

我的main.c是:

#include <stdio.h>
#include "subfunc.h"

int main()
{
    printhello();
    return 0;
}

然后我的subfunc.c是:

#include <stdio.h>
#include "subfunc.h"

void printhello(void)
{
    printf("hello world in function\n");
}

然后我的subfunc.h是:

void printhello(void);

由于

更新

实际上......我明白了。我右键单击文件subfunc.c和subfunc.h并选择属性并转到构建选项卡,我发现编译文件和链接文件的选项未勾选。感谢

2 个答案:

答案 0 :(得分:2)

enter image description here
请参见上图并与您的项目进行比较。仅与红色圆圈比较。忽略剩下的(剩下的就是我的项目/任务) 在my_subfunction.h中 写

    #ifndef __MY_SUBFUNC_H__
    #define __MY_SUBFUNC_H__


    #include<stdio.h>
    void printhello(void);
    #endif

在main.c中

#include <stdio.h>
#include "my_subfunc.h"

int main()
{
    printhello();
    return 0;
}

和my_subfun.c: -

#include <stdio.h>
#include "my_subfunc.h"

void printhello(void)
{
    printf("hello world in function\n");
}

我希望这会有所帮助.. 因为这对我有用。

答案 1 :(得分:1)

您没有确切说明未定义的错误是什么,但我认为它与您的main()printhello()函数有关。

在编译main.c和subfunc.c之后,确保在项目中链接两个对象文件main.obj和subfunc.obj。这应该自动发生在代码块中,假设您为正在构建的当前项目包含main.c和subfunc.c。