编程语言 · 2023年 10月 27日 0

头文件包含

29 次浏览

看似原始的做法,却是相当高效的引用方式。

编程语言的头文件包含

  • C/C++支持头文件包含。
  • PHP还可将include语句置于条件语句中,include_once类似ObjC的#import可以保证不会重复包含。PHP还提供require包含指定文件,它和include的差异是前者出错时会停止执行,后者不会。

头文件包含的本质

  • 文本插入。
  • #include包含.h是最常见的用法,但不限于.h, 任何合法的文件都可以被包含。

头文件插入后的行号错误

  • 用gcc -E选项预处理后的代码,可以看到形如# 5 "1.c"之类的插入行,它们在提示编译器把后面的代码行数看做是第五行。之所以存在是因为,头文件插入文本破坏了源代码的行号,编译器需要理清真实的行号。#line <line_no>作用类似。

不使用头文件的情形

  • 头文件包含在一些破解和逆向可能有奇用,这是C/C++语言设计导致的。比如,早期iPhone越狱破解,虽然大家不知道苹果给的库的真实头文件,但通过逆向猜到了头文件的样子,可以写这样一段头文件声明,就可以使用库函数了。
  • 一个更简单的例子,你不想用stdio.h其他的声明, 也可以写一个自己的头文件,只包含printf原型,即可使用printf.