GCC-3.4.6源代码学习笔记(24)

来源:互联网 发布:mac 移动文件夹 编辑:程序博客网 时间:2024/04/29 17:50

3.3.3.1.    可用的选项

这个数组在options.c文件中初始化,其初始化值在下表中给出。这是个很长的列表。更详细的描述,可参见【8】,【6】。注意,选项是按名字排序的。

选项

 

描述

标识集

--help

显示帮助信息

CL_COMMON

--output-pch=

参见pch_file

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

--param <param>=<value>

设置参数<param> value。(参考用于i386系统的target_switches)

CL_COMMON | CL_SEPARATE

--target-help

显示与目标相关的命令行选项

CL_COMMON

--version

显示版本信息

CL_COMMON

-A<question>=<answer>

声称<answer><question>。在<question>之前放置'-',对<question>屏蔽 <answer>

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-C

不丢弃注释

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-CC

在宏展开时,不要丢弃注释

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-D<macro>[=<val>]

定义<macro>具有<val>作为其值。如果仅有<macro><val>认为是1

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-E

仅作预处理,不进行编译,汇编或链接

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_UNDOCUMENTED

-G<number>

把小于<number> 字节的全局及静态数据置于特殊的段(在某些目标机器上)

CL_COMMON | CL_JOINED | CL_SEPARATE | CL_UINTEGER

-H

输出头文件名字如果它们被使用

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-I <dir>

<dir>加入主要包含路径后(the end of the main include path.)。

-I-

表示不能在当前目录中查找源文件,编译命令中指定的除外。

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-M

产生make的依赖关系

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-MD

产生make的依赖关系并编译

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_SEPARATE

-MF <file>

把依赖关系输出到指定文件

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-MG

把缺失的头文件视为产生的文件(generated files

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-MM

类似-M,但忽略系统头文件

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-MMD

类似-MD,但忽略系统头文件

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_SEPARATE

-MP

对所有头文件产生phony目标

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-MQ<target>

加入一个MAKE引用(MAKE-quoted)的目标

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-MT <target>

加入一个非引用的目标

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-O

-O<number>

设置优化的级别至<number>

CL_COMMON | CL_JOINED | CL_MISSING_OK

-Os

为空间优化甚于速度

CL_COMMON

-P

不要产生#line指示

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-U<macro>

取消<macro>的定义

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_SEPARATE

-W

已过时,应使用-Wextra

CL_COMMON | CL_REJECT_NEGATIVE

-Wabi

参见warn_abi

CL_CXX | CL_ObjCXX

-Waggregate-return

返回结构体,联合或数组时,给出警告

CL_COMMON

-Wall

使能绝大部分警告消息

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wbad-function-cast

警告把函数转换为不相符的类型

CL_C | CL_ObjC

-Wcast-align

警告增加对齐量的指针转换

CL_COMMON

-Wcast-qual

警告丢失限定符的转换

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wchar-subscripts

警告类型为char的下标

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wcomment

警告可能的嵌套的注释块,还有跨越一个以上物理行的C++注释

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wcomments

-Wcomment的别名

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wconversion

警告可能混乱的类型转换

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wctor-dtor-privacy

警告所有的构造函数及析构函数为私有

CL_CXX | CL_ObjCXX

-Wdeclaration-after-statement

警告一个声明跟在语句后

CL_C | CL_ObjC

-Wdeprecated

警告已过时的编译器特性(compiler feature

CL_CXX | CL_ObjCXX

-Wdeprecated-declarations

警告使用__attribute__((deprecated)) declarations

CL_COMMON

-Wdisabled-optimization

警告一个优化遍失能

CL_COMMON

-Wdiv-by-zero

警告编译时的整型除0计算

CL_C | CL_ObjC

-Weffc++

警告违反C++高效风格的规则(Effective C++ style rules

CL_CXX | CL_ObjCXX

-Wendif-labels

警告跟在#elif#endif后的符号(token

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Werror

把所有警告作为错误处理

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON

-Werror-implicit-function-declaration

视函数的隐式声明为错误

CL_C | CL_ObjC | CL_REJECT_NEGATIVE

-Wextra

输出额外(可能不需要的)的警告

CL_COMMON

-Wfloat-equal

警告比较浮点数是否相等

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat

警告printf/scanf/strftime/strfmon的异常格式字符串

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat-extra-args

警告解析到的参数数目超过格式字符串所引用的数目

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat-nonliteral

警告非文字的格式字符串

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat-security

警告格式功能(format functions)可能导致安全问题

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat-y2k

警告strftime格式产生2位数的年份

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wformat-zero-length

参见warn_format_zero_length

CL_C | CL_ObjC

-Wformat=

警告printf/scanf/strftime/strfmon的异常格式字符串

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED

-Wimplicit

参见warn_implicit

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wimplicit-function-declaration

警告隐式函数声明

CL_C | CL_ObjC

-Wimplicit-int

警告不指定类型的声明

CL_C | CL_ObjC

-Wimport

已过时。该选项不起作用

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Winit-self

警告给自身初始化的变量

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Winline

警告不能内联的内联函数

CL_COMMON

-Winvalid-offsetof

警告offset的无效使用

CL_CXX | CL_ObjCXX

-Winvalid-pch

警告PCH文件找到但未被使用

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wlarger-than-<number>

警告大于<number>字节的对象

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-Wlong-long

–pedantic下,不要警告long long"的使用

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wmain

警告可疑的main声明

CL_C | CL_ObjC

-Wmissing-braces

警告初始化数据可能缺少大括号

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wmissing-declarations

警告全局函数之前没有声明

CL_C | CL_ObjC

-Wmissing-format-attribute

警告函数可能也是格式属性(format attribute)的候选者

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wmissing-noreturn

警告函数可能也是属性 __attribute__((noreturn))的候选者

CL_COMMON

-Wmissing-prototypes

警告没有原型的全局函数

CL_C | CL_ObjC

-Wmultichar

警告使用多个字符的字符常量

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wnested-externs

警告extern声明不在文件域

CL_C | CL_ObjC

-Wnon-template-friend

警告在模板中声明非模板化(non-templatized)的友元函数

CL_CXX | CL_ObjCXX

-Wnon-virtual-dtor

警告非虚析构函数(non-virtual destructor

CL_CXX | CL_ObjCXX

-Wnonnull

参见warn_nonnull

CL_C | CL_ObjC

-Wold-style-cast

警告使用了C风格的转换

CL_CXX | CL_ObjCXX

-Wold-style-definition

警告使用了旧式的参数定义

CL_C | CL_ObjC

-Woverloaded-virtual

警告重载虚函数名

CL_CXX | CL_ObjCXX

-Wpacked

警告packed属性对struct布局没有作用

CL_COMMON

-Wpadded

警告对齐结构成员需要填充

CL_COMMON

-Wparentheses

警告可能缺少括号

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wpmf-conversions

警告把指针的类型转换为成员函数类型

CL_CXX | CL_ObjCXX

-Wpointer-arith

警告对函数指针进行数学计算

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wprotocol

警告继承的方法没有实现

CL_ObjC | CL_ObjCXX

-Wredundant-decls

警告同一对象多次声明

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wreorder

警告编译器重排代码

CL_CXX | CL_ObjCXX

-Wreturn-type

警告函数的返回类型默认为intC),或者返回类型不一致(C++

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wsequence-point

警告可能违反序列点(sequence point)规则

CL_C | CL_ObjC

-Wshadow

警告一个局部变量掩盖(shadow)另一个

CL_COMMON

-Wsign-compare

警告有符号无符号之间的比较

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wsign-promo

警告重载把有符号提升为无符号

CL_CXX | CL_ObjCXX

-Wstrict-aliasing

警告代码可能违反严格别名规则(strict aliasing rule

CL_COMMON

-Wstrict-prototypes

警告函数声明或定义时未指明参数类型

CL_C | CL_ObjC

-Wswitch

警告枚举的switch块中没有default,并缺少某个case

CL_COMMON

-Wswitch-default

警告switch块中没有default

CL_COMMON

-Wswitch-enum

警告枚举的switch块中缺少某个case

CL_COMMON

-Wsynth

警告综合的行为异于Cfront

CL_CXX | CL_ObjCXX

-Wsystem-headers

不压制系统头文件中的警告

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_COMMON

-Wtraditional

警告不属于传统C的特性

CL_C | CL_ObjC

-Wtrigraphs

警告可能改变程序含义的三字符词(trigraphs

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wundef

警告在#if指示中使用未定义的宏

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wuninitialized

警告未初始化的自动变量

CL_COMMON

-Wunknown-pragmas

警告不能识别的pragmas

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wunreachable-code

警告不会被执行的代码

CL_COMMON

-Wunused

使能所有-Wunused-警告

CL_COMMON

-Wunused-function

警告函数未使用

CL_COMMON

-Wunused-label

警告标签(label)未使用

CL_COMMON

-Wunused-macros

警告定义于主文件(main file)的宏未使用

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-Wunused-parameter

警告函数参数未使用

CL_COMMON

-Wunused-value

警告表达式值未使用

CL_COMMON

-Wunused-variable

警告变量未使用

CL_COMMON

-Wwrite-strings

给予字符串的类型为“char数组”

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-ansi

等同于-std=c89(对于C)或者-std=c++98(对于C++

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-aux-info<file>

导出声明信息至<file>

CL_COMMON | CL_SEPARATE

-aux-info=

参见aux_info_file_name

CL_COMMON | CL_JOINED

-auxbase

参见aux_base_name

CL_COMMON | CL_SEPARATE

-auxbase-strip

参见aux_base_name

CL_COMMON | CL_SEPARATE

-d<letters>

使能从编译器特定的遍(pass)中转储(dump

CL_C | CL_CXX | CL_ObjC |CL_ObjCXX|CL_COMMON | CL_JOINED

-dumpbase<file>

把文件<file>的基本名用于转储

CL_COMMON | CL_SEPARATE

-fPIC

参见flag_pic

CL_COMMON

-fPIE

参见flag_pie

CL_COMMON

-fabi-version=

参见flag_abi_version

CL_COMMON|CL_JOINED | CL_UINTEGER

-faccess-control

执行类成员访问控制语义

CL_CXX | CL_ObjCXX

-falign-functions

参见align_functions

CL_COMMON

-falign-functions=

参见align_functions

CL_COMMON | CL_JOINED | CL_UINTEGER | CL_REJECT_NEGATIVE

-falign-jumps

参见align_jumps

CL_COMMON

-falign-jumps=

参见align_jumps

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-falign-labels

参见align_labels

CL_COMMON

-falign-labels=

参见align_labels

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-falign-loops

参见align_loops

CL_COMMON

-falign-loops=

参见align_loops

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-fall-virtual

已过时,不支持

CL_CXX | CL_ObjCXX

-falt-external-templates

已过时,不支持

CL_CXX | CL_ObjCXX

-fargument-alias

指明参数可能互为别名(alias)及为全局对象的别名

CL_COMMON

-fargument-noalias

指明参数可能为全局对象的别名,但不会互为别名(alias

CL_COMMON

-fargument-noalias-global

假定参数不为其他对象的别名

CL_COMMON

-fasm

识别关键字asm

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-fasynchronous-unwind-tables

参见flag_unwind_tables

CL_COMMON

-fbounds-check

参见flag_bounds_check

CL_COMMON

-fbranch-count-reg

参见flag_branch_on_count_reg

CL_COMMON

-fbranch-probabilities

参见flag_branch_probabilities

CL_COMMON

-fbranch-target-load-optimize

在序言/结尾线程(prologue / epilogue threading)前执行跳转目的加载优化(branch target load optimization

CL_COMMON

-fbranch-target-load-optimize2

在序言/结尾线程(prologue / epilogue threading)后执行跳转目的加载优化(branch target load optimization

CL_COMMON

-fbuiltin

识别内建函数

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-fbuiltin-<function>

禁止指定的内建函数<function>

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED

-fcall-saved-<register>

标记<register>在函数过程中其值保留

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE

-fcall-used-<register>

标记<register>被函数调用所破坏

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE

-fcaller-saves

在函数调用前后保存/恢复寄存器

CL_COMMON

-fcheck-new

检查new返回的值

CL_CXX | CL_ObjCXX

-fcommon

不要把未初始化的全局数据放在公共段(common section

CL_COMMON

-fcond-mismatch

允许?操作符的参数为不同类型

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-fconserve-space

减少目标文件的大小

CL_CXX | CL_ObjCXX

-fconst-strings

使得字符串(string literals)为const char[]而不是char[]

CL_CXX | CL_ObjCXX

-fcprop-registers

参见flag_cprop_registers

CL_COMMON

-fcrossjumping

参见flag_crossjumping

CL_COMMON

-fcse-follow-jumps

参见flag_cse_follow_jumps

CL_COMMON

-fcse-skip-blocks

参见flag_cse_skip_blocks

CL_COMMON

-fdata-sections

把数据项放入自己的段

CL_COMMON

-fdefault-inline

默认地内联成员函数

CL_CXX | CL_ObjCXX

-fdefer-pop

参见flag_defer_pop

CL_COMMON

-fdelayed-branch

参见flag_delayed_branch

CL_COMMON

-fdelete-null-pointer-checks

参见flag_delete_null_pointer_checks

CL_COMMON

-fdiagnostics-show-location=[once|every-line]

自动换行(line-wrapped)诊断信息头部的源位置信息的输出频率

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE

-fdollars-in-identifiers

允许$用于标识符(identifier

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-fdump-<type>

转储编译器各种内部态到一个文件

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE

-fdump-unnumbered

压制在调试转储中输出指令号和行号

CL_COMMON

-felide-constructors

参见flag_elide_constructors

CL_CXX | CL_ObjCXX

-feliminate-dwarf2-dups

执行DWARF2的重复消除

CL_COMMON

-feliminate-unused-debug-symbols

只为使用的符号产生调试信息

CL_COMMON

-feliminate-unused-debug-types

消除在调试信息中未使用类型

CL_COMMON

-fenforce-eh-specs

产生代码检查异常规范(exception specifications

CL_CXX | CL_ObjCXX

-fenum-int-equiv

已过时,不支持

CL_CXX | CL_ObjCXX

-fexceptions

使能异常处理

CL_COMMON

-fexec-charset=<cset>

将所有字符串及字符常量转换到字符集<cset>

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE

-fexpensive-optimizations

执行某些次要,代价昂贵的优化

CL_COMMON

-fexternal-templates

已过时,不支持

CL_CXX | CL_ObjCXX

-ffast-math

参见set_fast_math_flags

CL_COMMON

-ffinite-math-only

假定不会产生NaNs或无穷数

CL_COMMON

-ffixed-<register>

标记<register>为编译器不可用

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE

-ffloat-store

不要把浮点数存入寄存器

CL_COMMON

-ffor-scope

参见flag_new_for_scope

CL_CXX | CL_ObjCXX

-fforce-addr

内存地址常量使用前拷入寄存器

CL_COMMON

-fforce-mem

内存操作数使用前拷入寄存器

CL_COMMON

-ffreestanding

不要假定标准C库和main存在

CL_C | CL_ObjC

-ffunction-cse

允许函数地址被保持在寄存器

CL_COMMON

-ffunction-sections

把每个函数放入自己的段

CL_COMMON

-fgcse

执行全局公共子表达式消除

CL_COMMON

-fgcse-las

全局公共子表达式消除遍将消除,跟在存入内存操作后,对同一地址的重复加载(部分及完全重复)

CL_COMMON

-fgcse-lm

全局公共子表达式消除力图移动只被向自己存入而作废的加载(loads which are only killed by stores into themselves)。这使得包含一个加载/存入序列的循环可以被变换为加载在循环外,而拷贝/存入在循环内

CL_COMMON

-fgcse-sm

在全局公共子表达式消除遍后,运行一次store motion遍。这个遍试图把存入移出循环。当和-fgcse-lm一起使用,包含一个加载/存入序列的循环可以被变换为,在循环前加载,在循环后存入。

CL_COMMON

-fgnu-keywords

识别GNU定义的关键字

CL_CXX | CL_ObjCXX

-fguess-branch-probability

参见flag_guess_branch_prob

CL_COMMON

-fguiding-decls

已过时,不支持

CL_CXX | CL_ObjCXX

-fhandle-exceptions

重命名为-fexceptions

CL_CXX | CL_ObjCXX

-fhonor-std

已过时,不支持

CL_CXX | CL_ObjCXX

-fhosted

假定为普通的C执行环境

CL_C | CL_ObjC

-fhuge-objects

使能大对象支持

CL_CXX | CL_ObjCXX

-fident

处理#ident指示

CL_COMMON

-fif-conversion

将条件跳转转换为等同的非分枝语句(branchless equivalent)。这包括使用条件移动、最小、最大、标识设置及绝对值指令,和标准算术中可行的技巧。使用芯片上可用的条件执行由if-conversion2控制

CL_COMMON

-fif-conversion2

把条件跳转转换为条件执行

CL_COMMON

-fimplement-inlines

即便函数是内联的,也把它导出(export

CL_CXX | CL_ObjCXX

-fimplicit-inline-templates

参见flag_implicit_inline_templates

CL_CXX | CL_ObjCXX

-fimplicit-templates

参见flag_implicit_templates

CL_CXX | CL_ObjCXX

-finhibit-size-directive

不要生成.size指示(directive

CL_COMMON

-finline

参见flag_no_inline

CL_COMMON

-finline-functions

参见flag_inline_functions

CL_COMMON

-finline-limit-<number>

参见表用于i386系统的target_switchesmax-inline-insns-singlemax-inline-insns-automax-inline-insns-rtl

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-finline-limit=<number>

-finput-charset=<cset>

指明源文件的默认字符集

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX | CL_JOINED | CL_REJECT_NEGATIVE

-finstrument-functions

参见flag_instrument_function_entry_exit

CL_COMMON

-fkeep-inline-functions

参见flag_keep_inline_functions

CL_COMMON

-fkeep-static-consts

参见flag_keep_static_consts

CL_COMMON

-flabels-ok

已过时,不支持

CL_CXX | CL_ObjCXX

-fleading-underscore

给外部符号加上前导的“_

CL_COMMON

-floop-optimize

参见flag_loop_optimize

CL_COMMON

-fmath-errno

在内建的数学函数后,设置errno

CL_COMMON

-fmem-report

报告永久内存分配(permanent memory allocation

CL_COMMON

-fmerge-all-constants

参见flag_merge_constants

CL_COMMON

-fmerge-constants

-fmessage-length=<number>

限制诊断信息为<number>个字符每行。0则禁止自动换行

CL_COMMON | CL_JOINED | CL_REJECT_NEGATIVE | CL_UINTEGER

-fmove-all-movables

强制把所有循环不变量(loop invariant)的计算移出循环

CL_COMMON

-fms-extensions

不警告使用Microsoft扩展

CL_C | CL_CXX | CL_ObjC | CL_ObjCXX

-fname-mangling-version-

已过时,不支持

CL_CXX | CL_ObjCXX | CL_JOINED

-fnew-abi

已过时,不支持

CL_CXX | CL_ObjCXX

-fnew-ra

使用图-着色寄存器分配(graph-coloring register allocation

CL_COMMON

-fnon-call-exceptions

参见flag_non_call_exceptions

CL_COMMON

原创粉丝点击