码迷,mamicode.com
首页 > 其他好文 > 详细

nginx 模块头文件包含问题

时间:2020-06-11 16:35:15      阅读:62      评论:0      收藏:0      [点我收藏+]

标签:复制   core   conf   使用   pre   文件   定义   一个   需要   

现象:

编译时遇到一个问题,提示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 模块头文件包含问题

标签:复制   core   conf   使用   pre   文件   定义   一个   需要   

原文地址:https://www.cnblogs.com/micoblog/p/13093654.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!