精华内容
下载资源
问答
  • 在Test.h中包含 和在Test.cpp中包含什么区别? 1、在cpp文件中包含.h文件,要么你要用到这头文件中的函数或者类,要么就是实现这头文件; 2、.h---就是为了放一堆声明所产生的东西。 如果是定义放在.h中。 ...
    现有两个文件Test.h 和Test.cpp
     #include <iostream>在Test.h中包含 和在Test.cpp中包含有什么区别?
    1、在cpp文件中包含.h文件,要么你要用到这个头文件中的函数或者类,要么就是实现这个头文件;
    2、.h ---就是为了放一堆声明所产生的东西。
    如果是定义放在.h中。     如果.h被重复包含多次,那么则会被报重定义。所以在.h 中都要---如果函数就要是inline ,如果是变量就要 selectany (windows)才不会被报错。
    
    
    3、#include尽量写到cpp文件里。两个文件在.h文件里相互include,就会产生编译错误,而两个文件在.c文件互相include,就不会有该问题,因此在.h文件include就要避免互相包含的问题,而.cpp文件就不需要考虑
    4、1)在 .h 里面 include 的好处是:
    如果很多.c,.cpp文件,都包含一批头文件,
    如果复制很容易遗漏
    如果输入,很容易出错
    
    如果全部在一个.h, include  那么每个.c,.cpp文件只需要一个#include 语句
    这样不仅输入量减少,
    而且代码也美观多了
    代码也主次分明了
    毕竟,.c.cpp, 里面
    要实现的函数,才是主要代码
    
    2)主要缺陷,
    可能会包含完全不需要的头文件,
    增加编译工作量
    5、如果你在a.h头文件中include了“stdio.h”,“iostream”,……一大堆
    那么你的a.cpp源文件只要include你的a.h,就相当于include了“stdio.h”,“iostream”,……一大堆
    但是当其他文件include你的a.h的同时也就包含了“stdio.h”,“iostream”,……一大堆
    
    这个要看你个人需要,如果你需要让其他文件也include一大堆,那么写在a.h中就可以,其他文件包含a.cpp简单整洁无脑
    如果只有a.cpp需要include一大堆,那么还是建议在a.cpp中include一大堆
    6、如果a.c包含了头文件a.h,a.h包含了头文件b.h,b.c也包含了b.h,那么当b.h发生改变时,a.c和b.c都会重新编译

    也就是所有包含了b.h的都会重新编译,无论是直接包含,还是间接包含

    7、2点原则:
    

    第一个原则:如果可以不包含头文件,那就不要包含了,这时候前置声明可以解决问题。如果使用的仅仅是一个类的指针,没有使用这个类的具体对象(非指针),也没有访问到类的具体成员,那么前置声明就可以了。因为指针这一数据类型的大小是特定的,编译器可以获知(C++编译器自上而下编译源文件的时候,对每一个数据的定义,总是需要知道定义的数据的类型的大小) 第二个原则:尽量在CPP文件中包含头文件,而非在头文件中。假设类A的一个成员是是一个指向类B的指针,在类A的头文件中使用了类 B的前置声明并编译成功,那么在A的实现中我们需要访问B的具体成员,因此需要包含头文件,那么我们应该在类A的实现部分(CPP文件)包含类B的头文件而非声明部分(H文件)

     

    感谢原作者的分享!

    原文地址:https://blog.csdn.net/xueruifan/article/details/50569639

    展开全文
  • 本文解决Description Resource Path Location Type multiple definition of `deal_word(std::string)' Myfunc.h /Vector_Test/src/Headers line 30 C/C++ Problem

    本文解决multiple definition of `XX'的错误。【出于反爬虫的目的,你不是在http://blog.csdn.net/zhanh1218上看到的,肯定不是最新最全的。

    关于头文件的定义中,请一定加上以下代码(此为头文件保护符):

    <span style="font-size:14px;"><span style="font-size:12px;">#ifndef PERSON_H_
    #define PERSON_H_
    // 你的代码块
    #endif /* PERSON_H_ */</span></span>
    其中PERSON_H_为保护符的名字,一般建议与类名保持一致!例子中我的类名为Person.h。

    每当编译器遇到#include时,都要去编译相关代码块,但是编译器不知道是不是已经编译过了,如果编译过了还去编译,那是不是等于代码块写了两次呢?所以,需要有不重复编译的机制,而这个机制正式以上代码。

    具体实现为:#ifdef当且仅当变量已定义时为真,#ifndef当且仅当变量未定义时为真。一旦检测结果为真,则执行后续操作直至遇到#endif。

    也就是说:如果首次include "Person.h",PERSON_H_是没有定义,此时,编译器会define这个保护符,并执行代码块的编译!直到遇到#endif。下次遇到这个保护符,就不会执行代码块的编译了。这样的机制保证了不会重复编译。

    实际使用中,我发现,单个cpp文件中多次include 同一个.h头文件或者头文件中多次include某个头文件,不会有问题。但是,多个cpp文件都include 同一个.h头文件时,这样会出问题。问题是类外定义的非static及非inline函数还是会报multiple definition of `XX'的错误。【也就是说:#define的作用域只是单个.cpp,而不是全局所有的.cpp文件

    最终解决方法是:只在头文件定义类的申明和类的主体定义(也就是{}内的内容),在一个同名的.cpp文件里定义类外函数的实现!问题完美解决。所以,就算是大神写的书,书上也不完全是对的,或者表述的全部都清楚。

    那么为什么头文件可以定义成以下形式呢?而不是只申明,不定义类体呢?

    <span style="font-size:14px;"><span style="font-size:12px;">class A
    {
    // 类定义
    };</span></span>

    类的定义,只是告诉编译器,类的数据格式是如何的,实例话后对象该占多大空间。  类的定义也不产生目标代码。因此它和普通变量的声明唯一的区别是不能在同一编译单元内出现多次。

    另一个原因就是,类可以在多个.cpp文件里重定义,变量却不行,除非用extern或者staic修饰的变量。

    至于普通变量:允许static型的变量的定义;允许extern申明(不能定义!);直接申明例如int a; 是不行的,也是多次重新定义。

    extern表明该变量在别的地方已经定义过了,在这里要使用那个变量;static 表示静态的变量,分配内存的时候,存储在静态区,不存储在栈上面。【一篇不错的Blog:点击打开链接

    下面是代码示例,此实例部分为C++ Primer练习题。【反爬虫,第二天更新代码!】

    /*********************************************************************
     * file_name: vector_test.cpp
     *
     *    Created on: 2014年6月28日 下午3:34:23
     *        Author: The_Third_Wave, Blog: http://blog.csdn.net/zhanh1218
     *         Email: zhanh121823@sina.com
     * Last modified: 2014年6月28日 下午3:34:23
     *********************************************************************/
    
    #include <iostream>
    #include <vector>
    #include <string>
    #include "Headers/Person.h"
    
    extern int k;
    int main()
    {
    	std::vector<Person> per = {{"The_Third_Wave", 100, "Blog: http://blog.csdn.net/zhanh1218"}}; // 类初始化+vector初始化,所以{{}, {}}必须的
    	for (auto &p: per)
    	{
    		print(std::cout, p);
    	}
    }
    /*********************************************************************
     * file_name: ddqdq.cpp
     *
     *    Created on: 2014年6月28日 下午10:28:42
     *        Author: The_Third_Wave, Blog: http://blog.csdn.net/zhanh1218
     *         Email: zhanh121823@sina.com
     * Last modified: 2014年6月28日 下午10:28:42
     *********************************************************************/
    #include <iostream>
    #include <vector>
    #include "Headers/Person.h"
    
    extern int k;
    /*********************************************************************
     * file_name: Person.h
     *
     *    Created on: 2014年6月28日 下午11:47:08
     *        Author: The_Third_Wave, Blog: http://blog.csdn.net/zhanh1218
     *         Email: zhanh121823@sina.com
     * Last modified: 2014年6月28日 下午11:47:08
     *********************************************************************/
    
    #ifndef PERSON_H_
    #define PERSON_H_
    /*****************************BEGIN***********************************/
    #include <iostream>
    #include <string>
    using namespace std;
    extern int a;
    class Person
    {
        friend istream &read(istream &is, Person &item);
        friend ostream &print(ostream &os, const Person &item);
    public:
    
        Person() = default;
        Person(const string &n, unsigned int a, string add):
    	    name(n), age(a), address(add) { }
        Person(istream &);
    
        string Name() const {return name;}
        unsigned int Age() const {return age;}
        string Address() const {return address;}
    
    private:
        string name = "";
        unsigned int age = 1;
        string address = "";
    };
    
    inline
    Person::Person(istream &is)
    {
        read(is, *this);
    }
    /******************************END************************************/
    #endif /* PERSON_H_ */
    /*********************************************************************
     * file_name: Person.cpp
     *
     *    Created on: 2014年6月28日 下午10:55:32
     *        Author: The_Third_Wave, Blog: http://blog.csdn.net/zhanh1218
     *         Email: zhanh121823@sina.com
     * Last modified: 2014年6月28日 下午10:55:32
     *********************************************************************/
    #include <iostream>
    #include <string>
    #include "Person.h"
    using namespace std;
    
    istream &read(istream &is, Person &item)
    {
        is >> item.name >> item.age >> item.address;
        return is;
    }
    ostream &print(ostream &os, const Person &item)
    {
        os << item.name << " " << item.age << " " << item.address << endl;
        return os;
    }
    

    还有不懂的请留言。

    本文由@The_Third_Wave(Blog地址:http://blog.csdn.net/zhanh1218)原创。还有未涉及的,会不定期更新,有错误请指正。

    如果你看到这篇博文时发现不完整,那是我为防止爬虫先发布一半的原因,请看原作者Blog。

    如果这篇博文对您有帮助,为了好的网络环境,不建议转载,建议收藏!如果您一定要转载,请带上后缀和本文地址。

    展开全文
  • H265打包成RTP

    千次阅读 2018-12-02 12:16:22
    本篇介绍一下H265怎么打包RTP,在H265中,每一前缀码00000001后面跟随的前两字节为NALU的语法元素,总体结构如下   这两字节字段分布如下,F(forbidden_zero_bit)通常为0,LayId(nuh_layer_id)通常为0,Tid...

    本篇介绍一下H265怎么打包RTP,在H265中,每一个前缀码00000001后面跟随的前两个字节为NALU的语法元素,总体结构如下

                         

    这两个字节字段分布如下,F(forbidden_zero_bit)通常为0,LayId(nuh_layer_id)通常为0,Tid(nuh_temporal_id_plus1)通常为1,所以对一段码流来说第二字节通常都是1。

                          

    1. 当收到NALU单元长度小于MTU时,直接把00000001/000001前缀去掉,加上RTPHead即可 

    2.当收到NALU单元长度大于MTU时,需要做FU分包处理,先把00000001前缀+2B类型去掉,然后对剩下的数据分包处理。分包的每一段数据前加上FUHead,FUHead长度是3字节。FUHead[0],FUHead[1]的结构和H265NULU类型2B结构相同,只是Type取值49即可。FUHead[2]结构如下,S置1表示分包开始,E置1分包结束,中间包都不置1,后面6bit就是H265的类型字段。

                           

    附上一段FFMPEG代码理解

    static void nal_send(AVFormatContext *ctx, const uint8_t *buf, int len, int last_packet_of_frame)
     {
            RTPMuxContext *rtp_ctx = ctx->priv_data;
            int rtp_payload_size   = rtp_ctx->max_payload_size - RTP_HEVC_HEADERS_SIZE;
            int nal_type           = (buf[0] >> 1) & 0x3F;
        
            //长度<MTU直接打包RTP发送
            /* send it as one single NAL unit? */
            if (len <= rtp_ctx->max_payload_size) {
                /* use the original NAL unit buffer and transmit it as RTP payload */
                ff_rtp_send_data(ctx, buf, len, last_packet_of_frame);
            } else {
                /*
                  create the HEVC payload header and transmit the buffer as fragmentation units (FU)
        
                     0                   1
                     0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5
                    +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
                    |F|   Type    |  LayerId  | TID |
                    +-------------+-----------------+
        
                       F       = 0
                       Type    = 49 (fragmentation unit (FU))
                       LayerId = 0
                       TID     = 1
                 */
                //分包先赋值RTP头三个字节
                //类型49表示该包是FU分包
                rtp_ctx->buf[0] = 49 << 1;
                //保持原来H265类型字段第二个字段 一般都是1
                rtp_ctx->buf[1] = 1;
        
                /*
                      create the FU header
        
                      0 1 2 3 4 5 6 7
                     +-+-+-+-+-+-+-+-+
                     |S|E|  FuType   |
                     +---------------+
        
                        S       = variable
                        E       = variable
                        FuType  = NAL unit type
                 */
                //保持原来H265类型字段类型字段 
                rtp_ctx->buf[2]  = nal_type;
                /* set the S bit: mark as start fragment */
                //设置开始标志
                rtp_ctx->buf[2] |= 1 << 7;
        
                /* pass the original NAL header */
                //去掉H264头类型长度
                buf += 2;
                len -= 2;
        
                while (len > rtp_payload_size) {
                    /* complete and send current RTP packet */
                    memcpy(&rtp_ctx->buf[RTP_HEVC_HEADERS_SIZE], buf, rtp_payload_size);
                    ff_rtp_send_data(ctx, rtp_ctx->buf, rtp_ctx->max_payload_size, 0);
        
                    buf += rtp_payload_size;
                    len -= rtp_payload_size;
        
                    /* reset the S bit */
                    //去掉开始结束标志
                    rtp_ctx->buf[2] &= ~(1 << 7);
                }
        
                /* set the E bit: mark as last fragment */
                //设置结束标志
                rtp_ctx->buf[2] |= 1 << 6;
        
                /* complete and send last RTP packet */
                memcpy(&rtp_ctx->buf[RTP_HEVC_HEADERS_SIZE], buf, len);
                ff_rtp_send_data(ctx, rtp_ctx->buf, len + 2, last_packet_of_frame);
            }
        }

    H265类型定义如下

    
    /**
    
     * Table 7-1: NAL unit type codes
    
     */
    
    enum HEVCNALUnitType {
    
        HEVC_NAL_TRAIL_N    = 0,
    
        HEVC_NAL_TRAIL_R    = 1,
    
        HEVC_NAL_TSA_N      = 2,
    
        HEVC_NAL_TSA_R      = 3,
    
        HEVC_NAL_STSA_N     = 4,
    
        HEVC_NAL_STSA_R     = 5,
    
        HEVC_NAL_RADL_N     = 6,
    
        HEVC_NAL_RADL_R     = 7,
    
        HEVC_NAL_RASL_N     = 8,
    
        HEVC_NAL_RASL_R     = 9,
    
        HEVC_NAL_VCL_N10    = 10,
    
        HEVC_NAL_VCL_R11    = 11,
    
        HEVC_NAL_VCL_N12    = 12,
    
        HEVC_NAL_VCL_R13    = 13,
    
        HEVC_NAL_VCL_N14    = 14,
    
        HEVC_NAL_VCL_R15    = 15,
    
        HEVC_NAL_BLA_W_LP   = 16,
    
        HEVC_NAL_BLA_W_RADL = 17,
    
        HEVC_NAL_BLA_N_LP   = 18,
    
        HEVC_NAL_IDR_W_RADL = 19,
    
        HEVC_NAL_IDR_N_LP   = 20,
    
        HEVC_NAL_CRA_NUT    = 21,
    
        HEVC_NAL_IRAP_VCL22 = 22,
    
        HEVC_NAL_IRAP_VCL23 = 23,
    
        HEVC_NAL_RSV_VCL24  = 24,
    
        HEVC_NAL_RSV_VCL25  = 25,
    
        HEVC_NAL_RSV_VCL26  = 26,
    
        HEVC_NAL_RSV_VCL27  = 27,
    
        HEVC_NAL_RSV_VCL28  = 28,
    
        HEVC_NAL_RSV_VCL29  = 29,
    
        HEVC_NAL_RSV_VCL30  = 30,
    
        HEVC_NAL_RSV_VCL31  = 31,
    
        HEVC_NAL_VPS        = 32,
    
        HEVC_NAL_SPS        = 33,
    
        HEVC_NAL_PPS        = 34,
    
        HEVC_NAL_AUD        = 35,
    
        HEVC_NAL_EOS_NUT    = 36,
    
        HEVC_NAL_EOB_NUT    = 37,
    
        HEVC_NAL_FD_NUT     = 38,
    
        HEVC_NAL_SEI_PREFIX = 39,
    
        HEVC_NAL_SEI_SUFFIX = 40,
    
    };
    

    H265类型分析

     

     

    展开全文
  • wireshark抓取h264

    千次阅读 2018-05-22 14:17:36
    从网络看到别人能使用wireshark工具抓取h264视频,这对于分析h264视频流来说极大的帮助,但是我用自己的电脑起初是怎么也抓不到h264的视频,结果如图1所示:图1怎么回事?别人的电脑能抓到?为什么我的电脑...

    从网络上看到别人能使用wireshark工具抓取h264视频包,这对于分析h264视频流来说有极大的帮助,但是我用自己的电脑起初是怎么也抓不到h264的视频包,结果如图1所示:

    图1

    怎么回事?别人的电脑能抓到?为什么我的电脑就不可以?其实不是电脑的原因,是别人比我多做了一些设置,首先确保你的wireshark能够抓到rtp包,如果抓不到,参见博文《https://blog.csdn.net/heibao111728/article/details/80403789》的介绍。

    如果wireshark可以抓到rtp包了,开始如下的设置:


    图2

    如图2所示,我们可以确定负载类型就是h264,并且负载的代码是96,然后Edit-》Preferences...-》Protocol-》h264,将“h264 dynamic payload code”的值设置成我们通过上面的方法查询到的值,此处为96,操作过程如图3~图4所示,最终结果如图5所示:

    图3

    图4

    图5

    展开全文
  • H264解析

    千次阅读 2015-02-06 13:21:03
    H.264/AVC标准中,整个系统框架被分为了两层面:视频编码层面(VCL)和网络抽象层面(NAL)。 VCL负责表示视频数据的内容,NAL则负责格式化数据并提供头信息,以保证数据适合各种信道和存储介质的传输。 在VCL...
  • H265的国标PS流打包

    千次阅读 2020-06-19 09:38:34
    可以看到,三厂家稍稍一点区别,海康是将VSP/SPS/PPS/SEI/IDR分开单独打包成一PES,宇视和大华则是将它们放到一PES里。其实两种方式都是符合ps打包规范的。 其实H265的ps打包与H264的PS打包方式一致...
  • 包含mmsystem.h有什么用

    千次阅读 2018-06-17 15:08:14
    windows中与多媒体有关的大多数接口。
  • H.323抓学习

    千次阅读 2019-08-11 15:18:28
    抓一最基本的分析一下: H.323 链接建立包含H.225和H.245两部分, H.225主要用来交互H.245地址, 这样设计主要因为在实际环境中,经常会部署h.323 gatekeeper,GK可以...这里抓的是两个h.323 终端直连的case...
  • android h263硬编码rtp打包

    千次下载 热门讨论 2013-06-18 15:45:35
    android h263硬编码rtp打包,详情看http://blog.csdn.net/xiaoliouc/article/details/8515313#comments
  • h264 丢花屏处理的一想法

    千次阅读 2013-01-04 00:05:15
    H264视频在分组网络中传输丢不可避免,尤其在网络环境不好时传输h264码流,丢会导致解码端花屏,马赛克严重,这方面的前沿技术是 FEC, NACK, 前者是 前向纠错技术,后者是重传,二者结合能很好的解决丢引起的...
  • H265打包成MP4文件

    千次阅读 2020-07-17 14:05:28
    hev1/hvc1里面的ChildAtom(hvcCAtom)其实就是HEVCDecoderConfigurationRecord结构体,如果做过H265推流对他就非常熟悉了。不懂网上去查查,资料很多这里不再赘述。 这里还 一套视频编码标准文档可以下载:h...
  • stdio.h头文件包含的函数哪些?

    千次阅读 2018-08-29 14:28:05
    stdio.h 以下来自维基百科中文 多数与C语言输入输出相关的函数在&lt;stdio.h&gt;中定义(C++中的&lt;cstdio&gt;)。 文件访问 fopen freopen fflush fclose 二进制输入/输出 fread ...
  • opencv中无法包含cv.h highgui.h 文件

    千次阅读 2019-04-16 15:16:33
    这有点忧伤~这次下了最新版本配置好环境以后挖坑把自己给埋了,因为装的是410版本的opencv,包含目录中只有opencv2这文件夹,花了几小时在网上查资料都没搞定,思来想去想到之前老大说过最新版本的软件不一定...
  • GB28181之H264打包PS

    千次阅读 2018-05-26 21:40:08
    一章PS解析H264的基础链接如下: PS解析H264 本章开始尝试更加难度的操作,把H264打包成ps流。PS流分为4大部分:PS头/系统头/节目流/PES。这四大部分每大量需要填写的字段,一时弄不清楚如何填写...
  • jrtplib打包发送H264

    千次阅读 2017-11-29 10:22:31
    个H.264 的 NALU 是这样的: [00 0000 01 67 42 A0 1E 23 56 0E 2F ... ] 这是一序列参数集 NAL 单元. [00 00 00 01] 是四字节的开始码, 67 是 NALU 头, 42 开始的数据是 NALU 内容.封装成 RTP 将如下:...
  • H264码流打包成RTP

    万次阅读 多人点赞 2014-07-20 20:30:19
    H264码流打包成RTP的代码如下:
  • 第二步:创建项目后在cpp文件夹下面创建一个h文件和一cpp文件1.h文件和cpp文件里面这里就随意写一求和的第三步:修改CMakeLists.txt文件。这里只是改了生成的名。和加入Hello.cpp文件第四步:编译 运行。这里...
  • 同时使用Qt与mms.lite库时时,在互相包含...查找mms.lite库发现在sysincs.h中已经对这两头文件包含顺序的处理,如下所示: /* winsock2.h MUST ALWAYS BE BEFORE windows.h to override defs in */ /* wins
  • 从零开始写一发送h264的rtsp服务器()一、什么是RTSP通常所说的rtsp协议其实包含三协议: rtsp协议, rtp协议, rtcp协议各协议运作流程概要:第一阶段:rtsp协议负责沟通传输什么数据,传的是图像还是声音,还是...
  • 1、解析rtpdump文件获取rtp。 2、将rtp解为hevc/h265裸流并存为265文件。 资源是一完整的vs2012工程。 对应的CSDN博文http://blog.csdn.net/andyshengjl/article/details/79330610
  • RTP协议全解析(H264码流和PS流)

    万次阅读 多人点赞 2014-09-12 17:35:05
    1RTP Header解析 2、RTP荷载H264码流 2.1、单个NAL单元 2.2、分片单元(FU-A) 3、RTP荷载PS流 3.1、PS包头 3.2、系统标题 3.3、节目映射流 3.4、PES分组头部
  • #include<stdio.h> 或 #include"stdio.h" 用#include<stdio.h>形式时,编译系统从存放C编译系统的子目录中去找所包含的文件stdio.h,这称为标准方式。 用#include"stdio.h"形式时,编...
  • H264 over RTP 的打包

    千次阅读 2018-09-10 18:24:03
    多媒体实时通信(如语音或视频通话)一般会使用RTP/UDP进行传输,本文对H264视频在RTP传输的数据格式进行总结,RFC6184 《RTP Payload Format for H.264 Video》是H264 over RTP的规范文档,详细的内容和细节请参考...
  • 请教大神什么书详细介绍像windows.h这类头文件包含的函数的具体用法的? 我想系统的学一学这头文件下的函数的具体用法,苦于找不到相关的书籍,求大神推荐啊
  • math.h 包含函数介绍

    万次阅读 多人点赞 2016-04-26 17:28:35
    数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体: 1、 三角函数 double sin(double);正弦 double cos(double);余弦 double tan(double);正切 2 、反三角函数 double asin ...
  • H.265与H.264对比哪些优势

    千次阅读 2018-06-19 17:15:34
    H.265与H.264对比哪些优势 &lt;/div&gt; &lt;div class="cl"&gt;&lt;/div&gt; &lt;/div&gt; ...
  • GDI+ GdiPlus.lib GdiPlus.h GdiPlus.dll完整开发

    千次下载 热门讨论 2009-09-09 11:23:01
    完整的GDI+开发,放上来只是方便大家下载。包含GdiPlus.lib GdiPlus.h GdiPlus.dll三文件。
  • 包含 afxres.h,编译报错的解决办法

    千次阅读 2019-07-16 21:37:10
    一些升级上来的工程内,rc 文件包含了 afxres.h,vs2015 内又找不到(位置在 C:\Program Files (x86)\...可以直接在 rc 文件内将包含 afxres.h 字样的都删除,一共两条,一在 #undef APSTUDIO_READONLY_SYMBOLS ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,744,108
精华内容 697,643
关键字:

包上有个h