c 声明 定义 导出 include 搞不清楚

doncidaci 2014-07-21 03:23:06
关键字 extern include

这几个有点头晕

我的想法是函数定义后,使用时要声明,其他文件使用直接include ,声明一般在.h中,定义在哪?定义和赋值 是否一样?

导出和 extern是否一样,以前写汇编的时候,先写一个.c,在.asm中要使用.c的函数,就extern该函数,然后call,但是在.c中

可以不使用extern,直接int a();,默认是extern,默认在.h?

下面解释下这段

引用
由于 NtQuerySystemInformation 这个系统服务在 ntddk.h 中并没有被声明,

虽然这个系统服务在 ntoskrnl.exe 中被导出了,但是没有它的声明,我们仍然是无法使用的,

所以我们就需要手动的声明一下这个函数


求简约的回答,不要ctrl c百度,精炼 明了,不要一大段一大段的,本人只会用c#,c的一直在自学,请各位大虾勿喷
...全文
173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
lionfresh 2014-07-28
  • 打赏
  • 举报
回复
楼上推荐的是本好书。
赵4老师 2014-07-21
  • 打赏
  • 举报
回复
《程序员的自我修养——链接、装载与库》
枫舞的季节 2014-07-21
  • 打赏
  • 举报
回复
给你看个例子:
a.c
int a();
void test()
{
a();
}
生成一个 a.obj 只编译不链接 生成代码如下
int __cdecl test()
{
char v1; // [sp+Ch] [bp-C0h]@1

memset(&v1, 0xCCCCCCCCu, 0xC0u);
a();
return _RTC_CheckEsp();
}



生成的extern


其实在前面声明了一个函数,和extern 的确一样,只不过编译器帮我们处理了。

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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