| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 503 人关注过本帖
标题:小白求解如何正确的编写头文件
只看楼主 加入收藏
小白编程
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-6-5
结帖率:100%
收藏
 问题点数:0 回复次数:6 
小白求解如何正确的编写头文件
自己想编写一个C头文件, 可是运行的时候显示没有定义abc()这是怎么回事哦
下面是我写的 头文件 和 源代码文件 以及 测试代码文件
abc.h
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
int abc();
>>>>>>>>>>>>>>>>>>>>>>>
abc.c
>>>>>>>>>>>>>>>>>>>>>>>>>>>>
#include<stdio.h>
#include "E:\C_code\abc.h"
int abc(void)
{
    return 1;
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
下面是测试文件代码
#include<stdio.h>
#include"E:\C_code\abc.h"
int main(void)
{
    int a;
    a = abc();
    printf("%d\n", a);
    return 0;
}
[Error] D:\我的文档\C-Free\Temp\未命名3.cpp:6: undefined reference to `abc()'
[Error] collect2: ld returned 1 exit status
搜索更多相关主题的帖子: include 源代码 return 如何 include 源代码 return 如何 
2015-06-05 07:59
wp231957
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:神界
等 级:贵宾
威 望:423
帖 子:13688
专家分:53332
注 册:2012-10-18
收藏
得分:0 
一般来说 头文件都是一些函数、常量啥的声明
而实现部分 则是在库文件里(*.lib)  没有实现部分 则点h文件啥都不是

如果仅仅是在一个工程中使用多个点c或者点cpp文件 则不需要链接成lib 可以直接使用  就相当于把一个点c或者点cpp 分割成多个小文件一样

DO IT YOURSELF !
2015-06-05 08:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:0 
我怀疑你的 abc.c 根本就没参与编译链接。你可以做个实验,将abc.c文件删除看看报不报错。

另外,声明为 int abc(),实现为 int abc(void),难道你不知道在C中(C++中不是这样),int abc() 等同于 int abc(...),而非 int abc(void)。不能因为C语言不检查,且大部分情况下不会出错就认为它是合法的。

头文件一般模式是
#ifndef ABC_H_
#define ABC_H_

extern int abc( void );

#endif
虽然对你这段代码而言没必要。
2015-06-05 08:31
情.难言ゝ
Rank: 3Rank: 3
来 自:安徽安庆
等 级:论坛游侠
威 望:1
帖 子:74
专家分:137
注 册:2013-9-8
收藏
得分:0 
abc.h
程序代码:
int abc()
{
    return 1;
}

abc.h
程序代码:
#include<stdio.h>
#include"E:\C_code\abc.h"
int main(void)
{
    int a;
    a = abc();
    printf("%d\n", a);
    return 0;
}

树叶的离去,是风的追求、还是树的不挽留???
2015-06-05 08:31
小白编程
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-6-5
收藏
得分:0 
回复 3楼 rjsp
怎么编译链接啊, 我只是把他们放在同一文件夹里啊
2015-06-05 18:20
小白编程
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2015-6-5
收藏
得分:0 
回复 4楼 情.难言ゝ
删除就好了 , 不是很多头文件都是声明的吗 源文件是定义的, 为什么我那个写法不对呢求高手解答 在线等,,,
2015-06-05 18:29
诸葛欧阳
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:流年
等 级:贵宾
威 望:82
帖 子:2790
专家分:14619
注 册:2014-10-16
收藏
得分:0 
最好把头文件和源文件放在一个工程中我怀疑你的头文件没有链接上,而且你的头文件的函数声明和源文件的定义不太一样

一片落叶掉进了回忆的流年。
2015-06-05 18:42
快速回复:小白求解如何正确的编写头文件
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.022691 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved