C语言头文件

南城边 2014-02-15 09:09:54
请教一个弱智问题:
自己写了头文件。。。分为了:
.h(内有内联函数的定义和非内联函数的声明)
.c(内有非内联函数的定义)
然后创建了工程,为工程添加了.c文件,在.c文件中#include了定义.h文件
这样就可以直接编译吗?还是要做其它处理?
我编译是报错了。。。
在编译.h中的一个内联函数A的时候,它提示找不到A中所调用的一个非内联函数B。
B是在A之前声明的,其定义是在相应的.c文件中。
...全文
241 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
jw903 2014-02-19
  • 打赏
  • 举报
回复
是报错还是给出警告?
Qian_F 2014-02-16
  • 打赏
  • 举报
回复
LISTCS_ToPre( &Cursor ); 这句是强转一下类型试试,LISTCS_ToPre((PLISTCS)&Cursor);
  • 打赏
  • 举报
回复
符号引用无法解析,这可能这是一个link error 请帖出整个.c和.h文件。
南城边 2014-02-15
  • 打赏
  • 举报
回复
虽然说我问题的焦点不在这个地方。。。 LISTCS_Pre和LISTCS_ToPre的意义不一样。。。 一个是吧Cursor修改,一个是获取修改后的结果。。。 所以得两个函数。。。 既然这样而且LISTCS_Pre就这么几行,我当然是用inline修饰提速了。。 而且我看的资料说只有在inline函数的代码长度较长,或者包含循环语句,复杂的开关语句等的时候才会被忽略。。。 我这里就一个函数调用。。。应该不会被忽略才对。。。
zhuobattle 2014-02-15
  • 打赏
  • 举报
回复
引用 4 楼 l383137093 的回复:
呃?为什么呢? 没说inline函数中不能调用函数吧。。。
inline 指示对编译器来说只是一个建议,编译器可以选择忽略

inline LISTCS LISTCS_Pre( LISTCS Cursor )
{
    LISTCS_ToPre( &Cursor );
    return Cursor;
}
//这样的调用,inline意义不大,直接调用那个LISTCS_ToPre不就可以了
南城边 2014-02-15
  • 打赏
  • 举报
回复
呃?为什么呢? 没说inline函数中不能调用函数吧。。。
zhuobattle 2014-02-15
  • 打赏
  • 举报
回复
这样调用估计已经不是inline,也没必要用inline了
南城边 2014-02-15
  • 打赏
  • 举报
回复
呃。。。工程里面只有一份.c文件,就只有 #include "list.h" int main() { return 0; } list.h和list.c都在改工程目录下但为被包含进该工程 然后编译。。 在list.c的这里报错,提示undefined reference to LISTCS_ToPre inline LISTCS LISTCS_Pre( LISTCS Cursor ) { LISTCS_ToPre( &Cursor ); return Cursor; } 但是在这部分之前已经声明了void LISTCS_ToPre( PLISTCS Cursor );
Mr. Code 2014-02-15
  • 打赏
  • 举报
回复
直接贴代码会更好

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧