nginx 模块头文件包含问题
Posted ncist-m
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx 模块头文件包含问题相关的知识,希望对你有一定的参考价值。
现象:
编译时遇到一个问题,提示xxx未定义,xxx在b.h中使用,在a.h中定义。
b.h没有包含任何头文件。刚开始以为是写错了,但是后来一想不是这样。
想法1:
编译是把头文件复制到c文件中,头文件不包含其他头文件也能说得过去。
是不是只需要在c文件包含b.h之前包含上a.h就可以了?
肯定是可以这样啊。
想法2:
细想就会发现有问题,难道我每次记得使用b.h之前要包含上a.h,那为啥不把#include <a.h>放在b.h里面呢?
这样确实更好了。
想法3:
但是细看a.h就发现有问题,a.h的结构是这样的:
#include <ngx_config.h> #include <ngx_core.h> /* 用户定义 其中包括了b.h中使用的"未定义"的结构体 */ /* 模块内部头文件 其中就包括了b.h */
这样就明白了,原来是模块的头文件都被包含在这个a.h,即对应着ngx_http.h,使用时仅需包含这个头文件即可。
以上是关于nginx 模块头文件包含问题的主要内容,如果未能解决你的问题,请参考以下文章