预编译的编译指令?C语言“编译预处理命令”,是什么意思

2024-10-17 21:45:17 2

预编译的编译指令?C语言“编译预处理命令”,是什么意思

大家好,关于编译指令很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于预编译的编译指令的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!

本文目录

预编译的编译指令

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有:(1)#include 指令该指令指示编译器将xxx.xxx文件的全部内容插入此处。若用《》括起文件则在系统的INCLUDE目录中寻找文件,若用 括起文件则在当前目录中寻找文件。一般来说,该文件是后缀名为h或cpp的头文件。注意:《》不会在当前目录下搜索头文件,如果我们不用《》而用把头文件名扩起,其意义为在先在当前目录下搜索头文件,再在系统默认目录下搜索。(2)#define指令该指令有三种用法:第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,原因见注1);第三种是定义函数,如#define get_max(a, b) ((a)》(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数(这种方法存在一些弊病,见注2)。第四种是定义宏函数,如#define GEN_FUN(type) type max_##type(type a,type b){return a》b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return a》b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说明。(3)#if、#else和#endif指令这些指令一般这样配合使用:#if defined(标识) //如果定义了标识要执行的指令#else要执行的指令#endif在头文件中为了避免重复调用(比如说两个头文件互相包含对方),常采用这样的结构:#if !(defined XXX) //XXX为一个在你的程序中唯一的标识符,//每个头文件的标识符都不应相同。//起标识符的常见方法是若头文件名为abc.h//则标识为abc_h#define XXX真正的内容,如函数声明之类#endif注1:因为:const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查,而对后者只进行字符替换,没有类型安全检查,并且在字符替换时可能会产生意料不到的错误(边际效应)。注2:例如get_max(a++, b)时,a++会被执行多少次取决于a和b的大小!所以建议还是用内联函数而不是这种方法提高速度。虽然有这样的弊病,但这种方法的确非常灵活,因为a和b可以是各种数据类型。注3:可以查看百度百科的预处理命令,编排的比较简明。

C语言“编译预处理命令”,是什么意思

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动对源程序编译

C语言的按照标识符、关键字、常用编译指令有哪些

我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理器指令,它们扩充了程序设计的环境。现把常用的预处理命令总结如下:1. 预处理程序按照ANSI标准的定义,预处理程序应该处理以下指令:#if #ifdef #ifndef #else #elif#endif#define#undef#line#error#pragma#include显然,上述所有的12个预处理指令都以符号#开始,,每条预处理指令必须独占一行。2. #define#define指令定义一个标识符和一个串(也就是字符集),在源程序中发现该标识符时,都用该串替换之。这种标识符称为宏名字,相应的替换称为宏代换。一般形式如下:#define macro-name char-sequence这种语句不用分号结尾。宏名字和串之间可以有多个空白符,但串开始后只能以新行终止。例如:我们使用LEFT代表1,用RIGHT代表0,我们使用两个#define指令:#define LEFT 1#define RIGHT 0每当在源程序中遇到LEFT或RIGHT时,编译程序都用1或0替换。定义一个宏名字之后,可以在其他宏定义中使用,例如:#define ONE 1#define TWO ONE+ONE#define THREE ONE+TWO宏代换就是用相关的串替代标识符。因此,如果希望定义一条标准错误信息时,可以如下定义:#define ERROR_MS “Standard error on input \n”如果一个串长于一行,可在行尾用反斜线”\”续行,如下:#define LONG_STRING “This is a very very long \String that is used as an example”3. #error#error指令强制编译程序停止编译,它主要用于程序调试。#error指令的一般形式是:#error error-message注意,宏串error-message不用双引号包围。遇到#error指令时,错误信息被显示,可能同时还显示编译程序作者预先定义的其他内容。4. #include程序中的#include指令要求编译程序读入另一个源文件。被读入文件的名字必须用双引号(“”)或一对尖括号(《》)包围,例如:#include “stdio.h”#include 《stdio.h》都使C编译程序读入并编译头文件以用于I/O系统库函数。包含文件中可以包含其他#include指令,称为嵌套包含。允许的最大嵌套深度随编译器而变。文件名被双括号或尖括号包围决定了对指定文件的搜索方式。文件名被尖括号包围时,搜索按编译程序作者的定义进行,一般用于搜索某些专门放置包含文件的特殊目录。当文件名被双括号包围时,搜索按编译程序实时的规定进行,一般搜索当前目录。如未发现,再按尖括号包围时的办法重新搜索一次。通常,绝大多数程序员使用尖括号包围标准的头文件,双引号用于包围与当前程序相关的文件名。5. 条件编译指令若干编译指令允许程序员有选择的编译程序源代码的不同部分,这种过程称为条件编译。5.1#if、#else、#elif #endif条件编译指令中最常用的或许是#if,#else,#elif和#endif。这些指令允许程序员根据常数表达式的结果有条件的包围部分代码。#if的一般形式是:#if constant-expressionStatement sequence#endif如#if后的常数表达式为真,则#if和#endif中间的代码被编译,否则忽略该代码段。#endif标记#if块的结束。#else指令的作用与C语言的else相似,#if指令失败时它可以作为备选指令。例如:#include 《stdio.h》#define MAX 100Int main(void){#if MAX》99printf(“Compiled for array greater than 99.\n”);#elseprintf(“Complied for small array.\n”);#endifreturn 0;}

C#必备知识之预编译指令

  预编译又称为预处理 是做些代码文本的替换工作 处理#开头的指令 比如拷贝#include包含的文件代码 #define宏定义的替换 条件编译等 就是为编译做的预备工作的阶段 主要处理#开始的预编译指令

  下面对C#中的预编译指令进行介绍

   #define和#undef

  用法

  #define DEBUG

  #undef DEBUG

  #define告诉编译器 我定义了一个DEBUG的一个符号 他类似一个变量 但是它没有具体的值 可以将它看为一个符号而已 #undef就是删除这个符号的定义 如果符号DEBUG没定义过 则#undef不起作用 否则#define不起作用 二者都必须放在源代码之前 二者的顺序看代码的顺序

  #define DEBUG

  #undef  DEBUG

  这样的话 DEBUG是没有定义的 如果二者换个顺序 编译器就认为DEBUG被定义了

   #if #elif #else #endif

  这个告诉编译器进行编译代码的流程控制 考虑下面代码

#if DEBUG   Console Write( debug );#elif RELEASE    Console Write( realse );#else    Console Write( other );#endif

  以上代码就是说如果定义了DEBUG则输出debug 定义了RELEASE 则输出realse 否则输出other 如果定义了DEBUG和REALSE会怎么样呢?各位可以自己试一下

   #warning #error

  通过这两个指定可以告诉编译器 出一个警告还是错误信息 除了错误信息以后 编译将停止

  参考下面的代码

#if DEBUG                     〉该DEBUG如果选中当前状态为DEBUG 则这个默认为#define   #warning 现在是Ddbug状态 #elif RELEASE                 〉如果选中release状态的话 这个确没有默认 不知道我试验的对不对    #warning 现在是Realse状态 #else    #error 并清楚什么状态 #endif

   #region 和#endregion

  这个两个用来组成代码块

   #line (这个指定的使用不太明白 参考MSDN)

  这个指令可以改jian变编译器在警告和错误信息中显示的文件名和行号信息 用#line default把行号恢复为默认的行号

  下面的示例说明如何报告与行号关联的两个警告 #line 指令迫使行号为 (尽管默认值为 # ) 另一行 (# ) 作为默认 #line 指令 的结果跟在通常序列后

  示例

// preprocessor_line cspublic class MyClass {   public static void Main()    {      #line       int i;   // CS on line       #line default      char c;   // CS on line    }}

  示例

  下面的示例说明调试器如何忽略代码中的隐藏行 运行此示例时 它将显示三行文本 但是 当设置如示例所示的断点并按 F 键逐句通过代码时 您将看到调试器忽略了隐藏行 另请注意 即使在隐藏行上设置断点 调试器仍会忽略它

lishixinzhi/Article/program/net/201311/15246

条件编译的指令

条件编译指令将决定哪些代码被编译,而哪些是不被编译的。可以根据表达式的值或者某个特定的宏是否被定义来确定编译条件。 一般形式有如下几种(1) #if表达式//语句段1#else//语句段2]#endif如果表达式为真,就编译语句段1,否则编译语句段2 (2) #if表达式1//语句段1#elif表达式2//语句段2#else//语句段3#endif如果表达式1真,则编译语句段1,否则判断表达式2;如果表达式2为真,则编译语句段2,否则编译语句段3 (1)#ifdef的一般形式: #ifdef宏名//语句段#endif作用:如果在此之前已定义了这样的宏名,则编译语句段。(2)#ifndef的一般形式: #ifndef宏名//语句段#endif作用:如果在此之前没有定义这样的宏名,则编译语句段。#else可以用于#ifdef和#ifndef中,但#elif不可以。 #include《stdio.h》#define LETTER1int main(int argc,char*argv)!=’\0’){i++;#ifdef LETTER1if(c》=’a’&&c《=’z’)c=c-32;#elseif(c》=’A’&&c《=’Z’)c=c+32;#endifprintf(%c,c);}return0;}运行结果为clANGUAGE

gcc的常用编译命令

gcc编译命令总结: 1.无选项 gcc test.c 默认生成可执行文件a.out 2.-o 生成的可执行文件名 gcc test.c -o test 3.多个文件一起编译 gcc test1.c test2.c -o test 4.-O选项 gcc -O1 test1.c -o test 作用:使用编译优化级别1编译程序,优化级别为1-3,级别越大优化效果越好,但编译时间越长 5 -g选项 :生成可调试信息 6.链接库的命令 gcc test.c -lm -o test -lm 表示链接系统的数学库 libm.a

字节码指令的编译与执行

java编程开发是目前市场上使用范围非常广泛的一种编程开发语言。今天我们就一起来了解一下,在java编程中关于字节码的一些指令的编译与执行方法。

java文件编译后的class文件,java跨平台的中间层,JVM通过对字节码的解释执行(执行模式,还有JIT编译执行,下面讲解),屏蔽对操作系统的依赖。一个字节(8位)可以储存256中不同的指令,这样的指令就是字节码,java所有指令有200个左右,这些指令组成了字节码文件(.class)。

一、字节码的主要指令:

.class文件里面的十六进制文件,其中CAFEBABE是标志这个文件为java的编译后的文件,00000034代表版本号,01670700一个字节(8位)就是一个字节指令,由于数值指令太难看懂,我们可以用javap将指令翻译为助记指令。

1、加载或储存指令

在栈帧中,通过指令操作数据在局部变量表与操作栈间传递。

ILOAD、ALOAD:将int、对象引用类型从局部变量表压入操作栈顶;

ISTORE、ASTORE:将int、对象引用类型从操作栈顶储存到局部变量表里;

ICONST、BIPUSH、SIPUSH、LDC:将常亮加载到操作栈顶。

2、运算指令

对操作栈上的值进行运算,并把结果写入操作栈顶,如IADD、IMUL。

3、类型转换指令

I2L、D2F

4、对象创建与访问指令

NEW

除了字节码指令外,昌平镇电脑培训认为还包括像LINENUMBER储存字节码与源码对应,方便调试定位;LOCALVARIABLE储存当前方法使用到的局部表量表。

二、java源码文件转化为字节码(.class)文件的过程

JAVA源文件----------》词法解析----------》语法解析----------》语义分析---------》生成字节码---------》字节码文件

词法分析:根据空格分割出单词、操作符等,形成token信息流;

语法分析:根据token流和java语法规范生成语法树;

语义分析:检查关键字、类型匹配是否正确;

Linux怎么编译c++文件用什么指令

   Linux编译c++源文件使用的命令为g++,操作步骤如下:

  1. 用vim命令打开一个文本进行,如:

    #vim hello.cpp

  2. 书写源代码内容,如:

    #include 《stdio.h》int main(){    printf("hello world\n" );    return 0;}

  3. 按ESC键,终止输入,用:wq命令保存,退出。

  4. 编译

    #g++ -o hello hello.cpp

    -o的意思是用来指定生成程序的名字

  5. 运行

    #./hello

    hello world

    #

编译java程序的命令是

  javac是Java的编译命令,能将源代码编译成字节码,以。class扩展名存入Java工作目录中。Java是Java解释器,执行字节码程序,该程序是类名所指的类,必须是一个完整定义的名字。javadoc是Java文档生成器,对Java源文件和包以XML格式生成API文档。appletviewer是Java Applet浏览器。   Java是一种编程语言,被特意设计用于互联网的分布式环境。Java具有类似于C++语言的“形式和感觉”,但它要比C++语言更易于使用,而且在编程时彻底采用了一种“以对象为导向”的方式。   使用Java编写的应用程序,既可以在一台单独的电脑上运行,也可以被分布在一个网络的服务器端和客户端运行。另外,Java还可以被用来编写容量很小的应用程序模块或者applet,做为网页的一部分使用。applet可使网页使用者和网页之间进行交互式操作。

jsp的常用指令有哪些(编译指令/动作指令整

  • Directive(编译指令)相当于在编译期间的指令:page、include、taglib。

         语法如下:

    page:   《%@page   language="java" *** %》

    include:《%@ include  file="fileUrl" %》

    taglib: 《%@taglib  prefix="c" uri=""%》

  • Action(动作指令)运行期间的命令:jsp:forward、jsp:param、jsp:include、jsp:plugin(用的很少)、jsp:useBean、jsp:setProperty、jsp:getProperty。

       语法如下:

    《jsp:forward page="forforward.jsp"/》

    《jsp:include page="divide.jsp" flush="true"》        《jsp:param name="v1" value="《%=value%》" /》        《jsp:param name="v2" value="《%=value2%》" /》    《jsp:include /》

    《jsp:useBean id="counterBean" class="cn.sxt.bean.CounterBean" scope="request" /》

    《jsp:setProperty property="count" name="counterBean" value="50" /》    《jsp:getProperty property="count" name="counterBean" /》

OK,关于编译指令和预编译的编译指令的内容到此结束了,希望对大家有所帮助。

预编译的编译指令?C语言“编译预处理命令”,是什么意思

本文编辑:admin

更多文章:


crypto数字货币(加密数字货币是什么)

crypto数字货币(加密数字货币是什么)

本文目录加密数字货币是什么加密货币全线暴跌,加密货币跟数字货币有何区别加密货币未来趋势加密货币是什么意思加密货币,虚拟货币和数字货币是一回事吗加密货币市场现极端行情,你对这种货币的流行怎么看加密数字货币是什么数字加密货币是不依靠法定货币机构

2023年9月24日 14:00

php多行注释是/*.. */还是/**..**/呢?怎么注释掉PHP段落代码 下面的这一段落都要注释掉,不要了,怎么弄

php多行注释是/*.. */还是/**..**/呢?怎么注释掉PHP段落代码 下面的这一段落都要注释掉,不要了,怎么弄

这篇文章给大家聊聊关于php注释,以及php多行注释是/*.. */还是/**..**/呢对应的知识点,希望对各位有所帮助,不要忘了收藏本站哦。本文目录php多行注释是/*.. */还是/**..**/呢怎么注释掉PHP段落代码 下面的这一

2024年7月24日 17:55

java动态数组定义(java里有没动态二维数组概念,如何定义)

java动态数组定义(java里有没动态二维数组概念,如何定义)

本文目录java里有没动态二维数组概念,如何定义Java动态二维数组 怎么动态定义java中如何创建动态数组java里如何定义动态数组请各位高手指教!java如何定义动态数组Java如何定义动态数组JAVA如何实现动态数组Java动态数组代

2024年6月28日 08:29

windows server 2008 r2镜像(求windowsserver2008 R2镜像,含USB3.0驱动)

windows server 2008 r2镜像(求windowsserver2008 R2镜像,含USB3.0驱动)

其实windows server 2008 r2镜像的问题并不复杂,但是又很多的朋友都不太了解求windowsserver2008 R2镜像,含USB3.0驱动,因此呢,今天小编就来为大家分享windows server 2008 r2镜像

2024年7月19日 04:45

h5小游戏开发需要多长时间_h5游戏一般是用什么开发的?开发一个小游戏软件都需要什么费用大概是多少怎样操作

h5小游戏开发需要多长时间_h5游戏一般是用什么开发的?开发一个小游戏软件都需要什么费用大概是多少怎样操作

各位老铁们,大家好,今天由我来为大家分享小游戏开发,以及h5小游戏开发需要多长时间_h5游戏一般是用什么开发的的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧

2024年10月6日 01:05

conception什么意思(审美观为什么不用conception)

conception什么意思(审美观为什么不用conception)

本文目录审美观为什么不用conceptionconcept和conception的区别concept是什么意思请问concept&conception的区别concept和conception symbol和symbolization的区别

2023年10月19日 03:20

汇编语言中断指令(汇编语言单片机中断)

汇编语言中断指令(汇编语言单片机中断)

其实汇编语言中断指令的问题并不复杂,但是又很多的朋友都不太了解汇编语言单片机中断,因此呢,今天小编就来为大家分享汇编语言中断指令的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!本文目录汇编语言单片机中断汇编的中断指令IN

2024年9月28日 05:55

免费动画制作软件(求推荐个专业动画制作软件)

免费动画制作软件(求推荐个专业动画制作软件)

本文目录求推荐个专业动画制作软件动漫制作软件那个最好最简单(免费的)求推荐个专业动画制作软件你可以先去【绘学霸】网站找“动画制作技术”板块的【免费】视频教程-【点击进入】完整入门到精通视频教程列表: www.huixueba.net/web

2024年6月26日 04:09

为什么要无功补偿(为什么电力系统要做无功补偿)

为什么要无功补偿(为什么电力系统要做无功补偿)

大家好,为什么要无功补偿相信很多的网友都不是很明白,包括为什么电力系统要做无功补偿也是一样,不过没有关系,接下来就来为大家分享关于为什么要无功补偿和为什么电力系统要做无功补偿的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧

2024年10月13日 09:40

linux系统能ghost吗(Linux系统能用Ghost备份吗)

linux系统能ghost吗(Linux系统能用Ghost备份吗)

本文目录Linux系统能用Ghost备份吗请问可以用ghost备份linux系统吗linux系统能用ghost装吗linux系统支持ghost吗用GHOST对LINUX系统做备ghost能够备份linux系统吗linux系统安装如何实现gh

2024年6月27日 07:52

印度疫情为何突然消失(印度疫情活埋6000人视频 疫情为何突然控制住了)

印度疫情为何突然消失(印度疫情活埋6000人视频 疫情为何突然控制住了)

大家好,今天小编来为大家解答以下的问题,关于印度疫情为何突然消失,印度疫情活埋6000人视频 疫情为何突然控制住了这个很多人还不知道,现在让我们一起来看看吧!本文目录印度疫情活埋6000人视频 疫情为何突然控制住了为什么现在没有印度疫情报道

2024年6月29日 13:53

dhtml的动态内容的作用是(谁知道DHTML由哪4各主要部分组成(动态网页设计方面))

dhtml的动态内容的作用是(谁知道DHTML由哪4各主要部分组成(动态网页设计方面))

“dhtml的动态内容的作用是”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看dhtml的动态内容的作用是(谁知道DHTML由哪4各主要部分组成(动态网页设计方面))!本文目录谁知道DHTML由哪4各主要部分组成(动态网页设

2024年7月22日 10:45

表白网站制作教程(怎么制作网站)

表白网站制作教程(怎么制作网站)

本文目录怎么制作网站怎么在手机上做表白网站怎么快速的制作表白网页而且能一直访问如何制作表白链接怎么制作网站制作网站的方法:要建立个人网站,首先必须要了解一下目前网页制作的基本语言HTML,入门即可,大概花个一二小时就可。学会使用目前流行的网

2024年7月2日 21:58

五金工具轮播图素材(五金店有哪些产品)

五金工具轮播图素材(五金店有哪些产品)

本文目录五金店有哪些产品‘五金’是指哪几样做五金必须知道工具的用途吗高分悬赏:五金行业产品有哪些五金工具图片及名称五金机械设备有哪些五金店有哪些产品1、锁类。这个在生活中很常见,比如房子的外装门锁、防盗锁、浴室锁,家具如玻璃上的橱窗锁,茶几

2024年7月11日 21:31

360站长平台(怎样提高搜索引擎对网站的收录)

360站长平台(怎样提高搜索引擎对网站的收录)

本文目录怎样提高搜索引擎对网站的收录在搜索引擎优化中,百度搜索量为0,360搜索量300,怎么做到的网站上线一个月了,360收录一直挺好,快1000+了,为什么百度收录很差你经常看哪类网站,觉得如何怎样提高搜索引擎对网站的收录网站想要快速收

2024年6月26日 00:43

tag是什么意思啊饭圈(饭圈用语tag有哪些)

tag是什么意思啊饭圈(饭圈用语tag有哪些)

本文目录饭圈用语tag有哪些饭圈tag什么意思tag是什么意思饭圈用语tag有哪些TAG即标签,就是指一篇网络日志、一个图片、一个音视频作品的关键词,通过TAG可以方便、灵活的对这些内容进行分类管理。tag能以较少的代价细化分类,tag可以

2024年7月14日 13:18

tcp测试工具(linux系统中怎么使用tcp测试工具)

tcp测试工具(linux系统中怎么使用tcp测试工具)

本文目录linux系统中怎么使用tcp测试工具TCP服务器性能如何测试linux系统中怎么使用tcp测试工具TCP调试助手是一个辅助调试UDP/TCP的工具软件,支持TCP Server、TCP Client、UDP等通信模式,为网络调试提

2024年5月16日 22:09

asp脚本的应用教案(ASP脚本循环语句)

asp脚本的应用教案(ASP脚本循环语句)

本文目录ASP脚本循环语句ASP基础入门:简介ASP入门:认识ASP程序所使用的几种脚本语言网站ASP如何应用ASP.NET Web Page应用深入探讨如何使用 ASP 编写开方脚本!ASP基础入门:脚本基础ASP脚本变量、函数、过程和条

2024年6月28日 04:09

javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)

javaee是干什么的(我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同)

本文目录我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同JavaEE到底是什么,如何理解我想知道学完javaEE后能做什么啊,就只能做web开发么,做网站开发和做web有什么不同JavaEE开发就是

2024年7月8日 07:45

typedef struct所有用法(typedef struct 用法是什么)

typedef struct所有用法(typedef struct 用法是什么)

其实typedef struct所有用法的问题并不复杂,但是又很多的朋友都不太了解typedef struct 用法是什么,因此呢,今天小编就来为大家分享typedef struct所有用法的一些知识,希望可以帮助到大家,下面我们一起来看看

2024年6月29日 10:51

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1735
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索