zoukankan      html  css  js  c++  java
  • 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,使用时仅需包含这个头文件即可。

  • 相关阅读:
    N++ 道ASP.NET面试题
    Console-算法:fun1(do while)
    软件业:印度比中国强在哪
    印度软件业崛起的奥妙
    算法目录
    scala目录
    scala命令
    Spark目录
    Ubuntu目录
    Java核心技术卷二部分笔记
  • 原文地址:https://www.cnblogs.com/micoblog/p/13093654.html
Copyright © 2011-2022 走看看