Nginx源码导读:[3]Ngnix头文件处理

这节主要讲一下nginx , 对头文件的包含 ,怎么处理多次包含的 ,其实也可以是小的C语言知识点

操作方法

  • 01

    在nginx中有很多头文件 ngx_core.h ngx_errno.h 等等, 并且他们很多相互包含了 ,大家可能会想那不是有重复定义了很多数据结构吗 ?

  • 02

    回答是当然不是,还记得上一节中的头文件吗 ,在这我们也拿过来 , ngx_config.h : #ifndef _NGX_CONFIG_H_INCLUDED_ #define _NGX_CONFIG_H_INCLUDED_ #include "ngx_linux_config.h" typedef intptr_t        ngx_int_t; typedef uintptr_t       ngx_uint_t; typedef intptr_t        ngx_flag_t; #endif 发现了吗 , nginx开头都有 #ifndef XXXXX ,nginx就是用这个条件宏来去重的 ,如果第一次就会#define _NGX_CONFIG_H_INCLUDED_  ,以后某个文件在include这个头文件 , #ifndef _NGX_CONFIG_H_INCLUDED_ 这个判断就是false了,直接就都#endif了

  • 03

    #ifndef这个语法是预处理执行的 ,类似于方面里面的if语句 ,但是预处理不同的是 ,处理完了 ,不满足条件的 ,编译后是不存的 , 而if语句是会怎么的 ,是在运行时做的条件判断

(0)

相关推荐

  • centos5 源码安装Nginx + mysql + apache + php的方法

    主要依照的是张宴的一篇博文《http://blog.s135.com/post/366/》,安装的软件是也是从他提供的列表中下载,这里都是tar.gz格式,如果更希望是rpm格式的话,提供一个网址《h ...

  • struts2 配置源码文件

    在开发的过程中如果使用框架,最折磨人的事情就是出现一个BUG,需要修改,但是没有源码. 这里教大家怎么在使用struts2的时候,把源码调出来. 操作方法 01 选择JAR文件,然后右击,选择属性. ...

  • Linux 下二进制源码包安装mysql 详细过程

    安装之前先把二进制源码准备好,可以从搜狐镜像下载:http://mirrors.sohu.com/ 我准备的是mysql-5.5.15-linux2.6-i686.tar.gz ,Linux vers ...

  • Linux下源码安装的经验详解

    在linux下安装软件,难免会碰到需要源码安装的,而就是这简简单单的./configure.make.sudo make install三步,却让不少人头疼不已,这里以安装X11为例具体介绍下我在安装 ...

  • Linux源码包安装过程及注意事项

    众做周知RedHat Linux使用RPM包管理器安装rpm包,但是RPM包是由红帽编译打包的,通常相对于最新版落后了很多,甚至可能缺少我们所要使用的功能.如果你需要定制想要的软件功能.自定义安装路径 ...

  • 修改Zend引擎实现PHP源码加密的原理及实践

    操作方法 01 PHP文件的源码都是明文,这对于某些商业用途来说,并不适合. 因此考虑使用加密的手段保护源码. 实在不耐烦等待zend出编译器,而且编译和加密本质上不是一回 事儿.自己动手.开始修改. ...

  • Linux系统下怎么用CheckInstall从源码创建一个RPM或DEB包

    问题:我想要从源码创建安装的软件包。有没有一种方式从源码来创建和安装软件包,而不是运行“make install”?这样的话,以后如果我想,我可以容易的卸载程序。 如果你已经从它的源码运行“make ...

  • 使用zend加密源码(zend guard安装和破解)

    我使用的是Wampserver,其中php的版本是5.3.10。 Zend Guard的安装及破解 点击下载Zend Guard5.5.0,下载完成后,请自行傻瓜化安装 这里需要注意以下几点: 1、本 ...

  • 教大家保护源码防破解教程

    当今社会当程序员不容易。这点是有目共睹的。再好的程序源码被别人一盗努力就全废了。 自我介绍不必说了,来论坛也不是几天的事了。进入正题 准备一个手机内存卡。准备一个读卡器。然后准备一个火炉。let's ...