在网络编程中经常会存在使用一些接口或者宏定义不知道该包含哪个头文件的情况,此时可以通过 grep 命令查找 /usr/include 目录来确认。
比如需要使用 TCP_USER_TIMEOUT 选项,如下所示,在我系统中只有 linux/tcp.h 头文件中有定义,而一般应用程序不该包含 linux 目录层的头文件,所以应用中如果需要使用该宏,可以自己进行宏定义。
或者要查找某些结构体是在哪个头文件中声明的,这时最好使用正则表达式进行查找,如下:
这里顺便简单说下 grep 的几个选项
-P:使用 PCRE 流派的正则表达式,应该也是比较用的多的正则表达式语法,如 \d,\w的使用
-n:可以显示查找内容具体对应的行号
-r: 递归查找所有文件
-i:比较时不区分大小写
-l:只显示包含匹配项的文件名
-o:只打印匹配的字符(同行出现相同匹配的字符会分开打印)
-c:显示匹配行的数量
-C<要显示的前后行数>:grep -C2 即再显示匹配行的前后2行要显示的前后行数>
-a: 不要忽略二进制文件
–include 指定查找的文件
–exclude 排除查找的文件