GCC學習筆記1

參考GCC4.9.1方英文手冊(轉載註明出處,同時歡迎大家指正錯誤)

1  GCC支持的程序設計語言

GCC目前支持的語言有C, C++,Objective-C, Objective-C++, Java, Fortran, Ada, 和 Go。

2  GCC對語言標準的支持

每種可被GCC編譯的語言都有一個標準,GCC試圖遵循一種或者更多不同版本的標準,可能有一些特殊情況,有時也會有一些擴展。

2.1  C語言

    GCC支持三種版本的C標準,不過對最新版本還沒有完全支持。我們都知道C89,如果你想要選擇GCC對C89標準的支持你應該使用如下選項之一:‘-ansi’,‘-std=c90’ or-std=iso9899:1990’爲了更加嚴格的依據標準進行編譯,你還應該明確指定-pedantic’or ‘-pedantic-errors’。1994和1996年糾正了C89中的一些錯誤,GCC不支持錯誤的版本。

1990年的修正標準於1995年出版。這個修正後的標準被稱爲C94或C95。要想選擇這個標準,在編譯時使用選項“-std=iso9899:199409”(,至於其他標準版本,可以指定“pedantic”選項獲得所有必需的錯誤檢查)。

新版ISO C標準於1999年出版即:ISO / IEC 9899:1999,通常被稱爲C99。GCC4.9.1完全支持這個版本的標準,具體細節可以參考:http://gcc.gnu.org/gcc - 4.6 / - c99status.html。要想選擇這個標準,編譯時使用“-std=c99”“-std=iso9899:1999”

1999 ISO C標準中的錯誤在三個技術勘誤中被糾正。這些刊物分別在2001年,2004年和2007年出版。GCC不支持未修正的版本。第四個版本的C標準,稱爲C11,GCC4.9.1完全支持這個標準,可以使用選項“-std=c11”或者“std=iso9899:2011”。ISO / IEC 9899:2011出版於2011年

默認情況下,GCC會提供一些擴展,用-std選項可以禁止這些擴展,你也可以選擇GCC對具體某個標準版本的擴展,用-std=gnu90’將使用GNU對C90的擴展,-std=gnu99,-std=gnu11道理是一樣的。默認情況下如果沒有任何C語言的標準選項,GCC默認的選項將會是-std=gnu90不久的將來會改變默認選項爲-std=gnu11’.

2.2C++語言

GCC支持ISO標準C++98和實驗性的標準C++11,最初發布的c++標準是:(ISO / IEC 14882:1998)

修改技術勘誤出版於2003年(ISO / IEC 14882:2003)。這些標準分別被稱爲C++98和C++03。GCC實現了絕大多數C++98(export是一個顯著的例外)和大部分在C++03中所做的變化。選擇這個標準應該使用“-ansi”,“-std=c++98”,或“-std=c++03”中的其中一個選項。爲了更加嚴格的依據標準進行編譯,你還應該明確指定-pedantic’or ‘-pedantic-errors’

重新制定的ISO C++標準ISO / IEC 14882:2011於2011年出版,被稱爲C++11;出版之前,被稱爲C++0x。C++11包含一些變化,其中大部分新特性GCC已經在實驗性的C++11模式下實現。關於實驗性的C++11模式下的C++11特性,參見http://gcc.gnu.org/projects/cxx0x.html。在GCC中選擇這個標準,應該使用選項‘-std=c++11’, 爲了更加嚴格的依據標準進行編譯,你還應該明確指定-pedantic’or ‘-pedantic-errors’

關於C++標準的更多信息可以參考ISO C++委員會的網站http://www.open-std.org/jtc1/sc22/wg21/

默認情況下,GCC提供了一些C++語言的擴展,使用上面列出的“‘-std”選項將禁用這些擴展。你也可以明確地選擇一個擴展版的C++語言。‘-std=gnu++98’(GNU對C+98的擴展) 或者‘-std=gnu++11’ (GNU對C+11的擴展). 默認情況下,如果沒有c++語言的標準選項, GCC默認的方言(即土話,意思是說gnu的選項而非標準的C語言)選項將會是‘-std=gnu++98’。

 

3  GCC命令行選項

當您調用GCC時,它通常會將預處理、編譯、彙編和鏈接四個階段一起執行。“一些命令行選項”能夠讓你停止在這個過程的某一箇中間階段。例如' c '選項將會命令GCC不要運行連接器。然後輸出包含對象文件的彙編程序。其他選項用在某一個處理階段。還有一些選項用於控制預處理器和編譯器本身。然而,其他選項控制彙編和鏈接器;大多數選項沒有記錄在這裏,因爲你很少需要使用其中的任何一個選項。

您可以使用大多數對C程序有效的命令行選項,當一個選項是針對另一種語言(通常是c++)的,這種情況會被明確指定的(也就是說沒有明確指定的選項都是可以用於控制C程序的編譯的)。如果描述某個特定的選項時沒有提到它支持哪種語言,這就代表您可以將該選項用於GCC支持的所有語言的編譯中。

GCC接受命令行參數和文件名作爲操作數,有許多命令行選項是多個字母的組合,他們不能被分開。例如:‘-dv’與‘-d -v’是完全不同的,你可以混合使用命令行參數,通常情況下這些參數的順序沒什麼影響,但是當你用相同的參數時它們的順序將是重要的,例如你指定多個‘L’參數,那麼目錄被搜索的次序將被明確指定。‘l’選項的位置也是重要的。

許多名字很長的選項以‘f’或‘W’開始,例如‘-fmove-loop-invariants’, ‘-Wformat’這些選項大部分都有兩種形式,一種簡單的一種複雜的。例如‘-ffoo’的複雜形式是‘-fno-foo’。本手冊只用其中的一種形式。但使用哪一種也不是默認的。

3.1  選項概要

    本節是所有選項按類型分組後的摘要,它們將會被接下來的章節具體描述。

1.  全局選項:(這些選項控制GCC編譯器輸出文件的類型,即控制GCC的編譯階段。具體參考3.2節)

    -c -S -E -o file -no-canonical-prefixes

-pipe  -pass-exit-codes

-x language  -v -###  --help[=class[,...]]  --target-help

--version  -wrapper  @file  -fplugin=file -fplugin-arg-name=arg

-fdump-ada-spec[-slim]  -fada-spec-parent=unit  -fdump-go-spec=file

2.C語言選項:(這些選項用於控制C語言標準和GNU擴展的一些東西)

    -ansi  -std=standard  -fgnu89-inline

-aux-info filename  -fallow-parameterless-variadic-functions

-fno-asm  -fno-builtin  -fno-builtin-function

-fhosted -ffreestanding-fopenmp -fopenmp-simd -fms-extensions

-fplan9-extensions -trigraphs-traditional -traditional-cpp

-fallow-single-precision-fcond-mismatch -flax-vector-conversions

-fsigned-bitfields-fsigned-char

-funsigned-bitfields-funsigned-char

3.C++語言選項:(這些選項用於控制C++語言標準和GNU擴展的一些東西)

-fabi-version=n-fno-access-control -fcheck-new

-fconstexpr-depth=n-ffriend-injection

-fno-elide-constructors

-fno-enforce-eh-specs

-ffor-scope -fno-for-scope-fno-gnu-keywords

-fno-implicit-templates

-fno-implicit-inline-templates

-fno-implement-inlines-fms-extensions

-fno-nonansi-builtins-fnothrow-opt -fno-operator-names

-fno-optional-diags -fpermissive

-fno-pretty-templates

-frepo -fno-rtti -fstats-ftemplate-backtrace-limit=n

-ftemplate-depth=n

-fno-threadsafe-statics-fuse-cxa-atexit -fno-weak -nostdinc++

-fvisibility-inlines-hidden

-fvtable-verify=std|preinit|none

-fvtv-counts -fvtv-debug

-fvisibility-ms-compat

-fext-numeric-literals

-Wabi -Wconversion-null-Wctor-dtor-privacy

-Wdelete-non-virtual-dtor-Wliteral-suffix -Wnarrowing

-Wnoexcept -Wnon-virtual-dtor-Wreorder

-Weffc++-Wstrict-null-sentinel

-Wno-non-template-friend-Wold-style-cast

-Woverloaded-virtual-Wno-pmf-conversions

-Wsign-promo

4. Objective-C 和 Objective-C++ 選項

-fconstant-string-class=class-name

-fgnu-runtime -fnext-runtime

-fno-nil-receivers

-fobjc-abi-version=n

-fobjc-call-cxx-cdtors

-fobjc-direct-dispatch

-fobjc-exceptions

-fobjc-gc

-fobjc-nilcheck

-fobjc-std=objc1

-freplace-objc-classes

-fzero-link

-gen-decls

-Wassign-intercept

-Wno-protocol -Wselector

-Wstrict-selector-match

-Wundeclared-selector

5.語言無關選項(用於控制調試消息的格式)

-fmessage-length=n

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

-fdiagnostics-color=[auto|never|always]

-fno-diagnostics-show-option-fno-diagnostics-show-caret

    6.警告選項(用於控制GCC對警告的彙報情況)

-fsyntax-only -fmax-errors=n-Wpedantic

-pedantic-errors

-w -Wextra -Wall -Waddress-Waggregate-return

-Waggressive-loop-optimizations-Warray-bounds

-Wno-attributes-Wno-builtin-macro-redefined

-Wc++-compat -Wc++11-compat-Wcast-align -Wcast-qual

-Wchar-subscripts -Wclobbered-Wcomment -Wconditionally-supported

-Wconversion-Wcoverage-mismatch -Wdate-time -Wdelete-incomplete -Wno-cpp

-Wno-deprecated-Wno-deprecated-declarations -Wdisabled-optimization

-Wno-div-by-zero-Wdouble-promotion -Wempty-body -Wenum-compare

-Wno-endif-labels -Werror-Werror=*

-Wfatal-errors -Wfloat-equal-Wformat -Wformat=2

-Wno-format-contains-nul-Wno-format-extra-args -Wformat-nonliteral

-Wformat-security-Wformat-y2k

-Wframe-larger-than=len-Wno-free-nonheap-object -Wjump-misses-init

-Wignored-qualifiers

-Wimplicit-Wimplicit-function-declaration -Wimplicit-int

-Winit-self -Winline-Wmaybe-uninitialized

-Wno-int-to-pointer-cast-Wno-invalid-offsetof

-Winvalid-pch-Wlarger-than=len -Wunsafe-loop-optimizations

-Wlogical-op -Wlong-long

-Wmain -Wmaybe-uninitialized-Wmissing-braces -Wmissing-field-initializers

-Wmissing-include-dirs

-Wno-multichar -Wnonnull-Wno-overflow -Wopenmp-simd

-Woverlength-strings -Wpacked-Wpacked-bitfield-compat -Wpadded

-Wparentheses-Wpedantic-ms-format -Wno-pedantic-ms-format

-Wpointer-arith-Wno-pointer-to-int-cast

-Wredundant-decls-Wno-return-local-addr

-Wreturn-type-Wsequence-point -Wshadow

-Wsign-compare-Wsign-conversion -Wfloat-conversion

-Wsizeof-pointer-memaccess

-Wstack-protector-Wstack-usage=len -Wstrict-aliasing

-Wstrict-aliasing=n

-Wstrict-overflow-Wstrict-overflow=n

-Wsuggest-attribute=[pure|const|noreturn|format]

-Wmissing-format-attribute

-Wswitch -Wswitch-default-Wswitch-enum -Wsync-nand

-Wsystem-headers-Wtrampolines -Wtrigraphs -Wtype-limits -Wundef

-Wuninitialized-Wunknown-pragmas -Wno-pragmas

-Wunsuffixed-float-constants-Wunused -Wunused-function

-Wunused-label-Wunused-local-typedefs -Wunused-parameter

-Wno-unused-result-Wunused-value

-Wunused-variable

-Wunused-but-set-parameter-Wunused-but-set-variable

-Wuseless-cast-Wvariadic-macros -Wvector-operation-performance

-Wvla -Wvolatile-register-var-Wwrite-strings -Wzero-as-null-pointer-constant

7. C 和 Objective-C 的警告選項

    -Wbad-function-cast -Wmissing-declarations

-Wmissing-parameter-type-Wmissing-prototypes -Wnested-externs

-Wold-style-declaration-Wold-style-definition

-Wstrict-prototypes-Wtraditional -Wtraditional-conversion

-Wdeclaration-after-statement-Wpointer-sign

8.調試開關(調試自己的程序或者GCC本身)

    -dletters -dumpspecs -dumpmachine-dumpversion

-fsanitize=style

-fdbg-cnt-list-fdbg-cnt=counter-value-list

-fdisable-ipa-pass_name

-fdisable-rtl-pass_name

-fdisable-rtl-pass-name=range-list

-fdisable-tree-pass_name

-fdisable-tree-pass-name=range-list

-fdump-noaddr-fdump-unnumbered -fdump-unnumbered-links

-fdump-translation-unit[-n]

-fdump-class-hierarchy[-n]

-fdump-ipa-all -fdump-ipa-cgraph-fdump-ipa-inline

-fdump-passes

-fdump-statistics

-fdump-tree-all

-fdump-tree-original[-n]

-fdump-tree-optimized[-n]

-fdump-tree-cfg-fdump-tree-alias

-fdump-tree-ch

-fdump-tree-ssa[-n]-fdump-tree-pre[-n]

-fdump-tree-ccp[-n]-fdump-tree-dce[-n]

-fdump-tree-gimple[-raw]

-fdump-tree-dom[-n]

-fdump-tree-dse[-n]

-fdump-tree-phiprop[-n]

-fdump-tree-phiopt[-n]

-fdump-tree-forwprop[-n]

-fdump-tree-copyrename[-n]

-fdump-tree-nrv-fdump-tree-vect

-fdump-tree-sink

-fdump-tree-sra[-n]

-fdump-tree-forwprop[-n]

-fdump-tree-fre[-n]

-fdump-tree-vtable-verify

-fdump-tree-vrp[-n]

-fdump-tree-storeccp[-n]

-fdump-final-insns=file

-fcompare-debug[=opts]-fcompare-debug-second

-feliminate-dwarf2-dups-fno-eliminate-unused-debug-types

-feliminate-unused-debug-symbols-femit-class-debug-always

-fenable-kind-pass

-fenable-kind-pass=range-list

-fdebug-types-section-fmem-report-wpa

-fmem-report-fpre-ipa-mem-report -fpost-ipa-mem-report -fprofile-arcs

-fopt-info

-fopt-info-options[=file]

-frandom-seed=string-fsched-verbose=n

-fsel-sched-verbose-fsel-sched-dump-cfg -fsel-sched-pipelining-verbose

-fstack-usage -ftest-coverage-ftime-report -fvar-tracking

-fvar-tracking-assignments-fvar-tracking-assignments-toggle

-g -glevel -gtoggle -gcoff-gdwarf-version

-ggdb -grecord-gcc-switches-gno-record-gcc-switches

-gstabs -gstabs+-gstrict-dwarf -gno-strict-dwarf

-gvms -gxcoff -gxcoff+

-fno-merge-debug-strings-fno-dwarf2-cfi-asm

-fdebug-prefix-map=old=new

-femit-struct-debug-baseonly-femit-struct-debug-reduced

-femit-struct-debug-detailed[=spec-list]

-p -pg-print-file-name=library -print-libgcc-file-name

-print-multi-directory-print-multi-lib -print-multi-os-directory

-print-prog-name=program-print-search-dirs -Q

-print-sysroot-print-sysroot-headers-suffix

-save-temps -save-temps=cwd-save-temps=obj -time[=file]

9.優化選項

-faggressive-loop-optimizations-falign-functions[=n]

-falign-jumps[=n]

-falign-labels[=n]-falign-loops[=n]

-fassociative-math-fauto-inc-dec -fbranch-probabilities

-fbranch-target-load-optimize-fbranch-target-load-optimize2

-fbtr-bb-exclusive-fcaller-saves

-fcheck-data-deps-fcombine-stack-adjustments -fconserve-stack

-fcompare-elim-fcprop-registers -fcrossjumping

-fcse-follow-jumps-fcse-skip-blocks -fcx-fortran-rules

-fcx-limited-range

-fdata-sections -fdce-fdelayed-branch

-fdelete-null-pointer-checks-fdevirtualize -fdevirtualize-speculatively -

fdse

-fearly-inlining -fipa-sra-fexpensive-optimizations -ffat-lto-objects

-ffast-math-ffinite-math-only -ffloat-store -fexcess-precision=style

-fforward-propagate-ffp-contract=style -ffunction-sections

-fgcse -fgcse-after-reload-fgcse-las -fgcse-lm -fgraphite-identity

-fgcse-sm-fhoist-adjacent-loads -fif-conversion

-fif-conversion2-findirect-inlining

-finline-functions -finline-functions-called-once-finline-limit=n

-finline-small-functions-fipa-cp -fipa-cp-clone

-fipa-pta -fipa-profile-fipa-pure-const -fipa-reference

-fira-algorithm=algorithm

-fira-region=region-fira-hoist-pressure

-fira-loop-pressure-fno-ira-share-save-slots

-fno-ira-share-spill-slots-fira-verbose=n

-fisolate-erroneous-paths-dereference-fisolate-erroneous-paths-attribute -

fivopts-fkeep-inline-functions -fkeep-static-consts -flive-range-shrinkage

-floop-block-floop-interchange -floop-strip-mine -floop-nest-optimize

-floop-parallelize-all -flto-flto-compression-level

-flto-partition=alg-flto-report -flto-report-wpa -fmerge-all-constants

-fmerge-constants-fmodulo-sched -fmodulo-sched-allow-regmoves

-fmove-loop-invariants-fno-branch-count-reg

-fno-defer-pop-fno-function-cse -fno-guess-branch-probability

-fno-inline -fno-math-errno-fno-peephole -fno-peephole2

-fno-sched-interblock-fno-sched-spec -fno-signed-zeros

-fno-toplevel-reorder-fno-trapping-math -fno-zero-initialized-in-bss

-fomit-frame-pointer-foptimize-sibling-calls

-fpartial-inlining-fpeel-loops -fpredictive-commoning

-fprefetch-loop-arrays-fprofile-report

-fprofile-correction-fprofile-dir=path -fprofile-generate

-fprofile-generate=path

-fprofile-use-fprofile-use=path -fprofile-values -fprofile-reorder-functions

-freciprocal-math -free-frename-registers -freorder-blocks

-freorder-blocks-and-partition-freorder-functions

-frerun-cse-after-loop-freschedule-modulo-scheduled-loops

-frounding-math-fsched2-use-superblocks -fsched-pressure

-fsched-spec-load-fsched-spec-load-dangerous

14 Using the GNU CompilerCollection (GCC)

-fsched-stalled-insns-dep[=n]-fsched-stalled-insns[=n]

-fsched-group-heuristic-fsched-critical-path-heuristic

-fsched-spec-insn-heuristic-fsched-rank-heuristic

-fsched-last-insn-heuristic-fsched-dep-count-heuristic

-fschedule-insns-fschedule-insns2 -fsection-anchors

-fselective-scheduling-fselective-scheduling2

-fsel-sched-pipelining-fsel-sched-pipelining-outer-loops

-fshrink-wrap-fsignaling-nans -fsingle-precision-constant

-fsplit-ivs-in-unroller-fsplit-wide-types -fstack-protector

-fstack-protector-all-fstack-protector-strong -fstrict-aliasing

-fstrict-overflow-fthread-jumps -ftracer -ftree-bit-ccp

-ftree-builtin-call-dce-ftree-ccp -ftree-ch

-ftree-coalesce-inline-vars-ftree-coalesce-vars -ftree-copy-prop

-ftree-copyrename -ftree-dce-ftree-dominator-opts -ftree-dse

-ftree-forwprop -ftree-fre-ftree-loop-if-convert

-ftree-loop-if-convert-stores-ftree-loop-im

-ftree-phiprop-ftree-loop-distribution -ftree-loop-distribute-patterns

-ftree-loop-ivcanon-ftree-loop-linear -ftree-loop-optimize

-ftree-loop-vectorize

-ftree-parallelize-loops=n-ftree-pre -ftree-partial-pre -ftree-pta

-ftree-reassoc -ftree-sink-ftree-slsr -ftree-sra

-ftree-switch-conversion-ftree-tail-merge -ftree-ter

-ftree-vectorize -ftree-vrp

-funit-at-a-time-funroll-all-loops -funroll-loops

-funsafe-loop-optimizations-funsafe-math-optimizations -funswitch-loops

-fvariable-expansion-in-unroller-fvect-cost-model -fvpt -fweb

-fwhole-program -fwpa-fuse-ld=linker -fuse-linker-plugin

--param name=value -O -O0 -O1-O2 -O3 -Os -Ofast -Og

    10.預處理選項

-Aquestion=answer

-A-question[=answer]

-C -dD -dI -dM -dN

-Dmacro[=defn] -E -H

-idirafter dir

-include file -imacros file

-iprefix file -iwithprefixdir

-iwithprefixbefore dir-isystem dir

-imultilib dir -isysroot dir

-M -MM -MF -MG -MP -MQ -MT-nostdinc

-P -fdebug-cpp-ftrack-macro-expansion -fworking-directory

-remap -trigraphs -undef-Umacro

-Wp,option -Xpreprocessoroption -no-integrated-cpp

    11.彙編器選項

-Wa,option -Xassembler option

    12.連接器選項

object-file-name -llibrary

-nostartfiles -nodefaultlibs-nostdlib -pie -rdynamic

-s -static -static-libgcc-static-libstdc++

-static-libasan-static-libtsan -static-liblsan -static-libubsan

-shared -shared-libgcc-symbolic

-T script -Wl,option -Xlinkeroption

-u symbol

    13.目錄選項(用於控制目錄搜索)

-Bprefix -Idir-iplugindir=dir

-iquotedir -Ldir -specs=file-I-

--sysroot=dir--no-sysroot-suffix

    14.機器相關選項

AArch64Options

-mabi=name -mbig-endian-mlittle-endian

-mgeneral-regs-only

-mcmodel=tiny -mcmodel=small-mcmodel=large

-mstrict-align

-momit-leaf-frame-pointer-mno-omit-leaf-frame-pointer

-mtls-dialect=desc-mtls-dialect=traditional

-march=name -mcpu=name-mtune=name

AdaptevaEpiphany Options

-mhalf-reg-file-mprefer-short-insn-regs

-mbranch-cost=num -mcmove-mnops=num -msoft-cmpsf

-msplit-lohi -mpost-inc-mpost-modify -mstack-offset=num

-mround-nearest -mlong-calls-mshort-calls -msmall16

-mfp-mode=mode -mvect-double-max-vect-align=num

-msplit-vecmove-early-m1reg-reg

ARCOptions

-mbarrel-shifter

-mcpu=cpu -mA6 -mARC600 -mA7-mARC700

-mdpfp -mdpfp-compact-mdpfp-fast -mno-dpfp-lrsr

-mea -mno-mpy -mmul32x16-mmul64

-mnorm -mspfp -mspfp-compact-mspfp-fast -msimd -msoft-float -mswap

-mcrc -mdsp-packa -mdvbf-mlock -mmac-d16 -mmac-24 -mrtsc -mswape

-mtelephony -mxy -misize-mannotate-align -marclinux -marclinux_prof

-mepilogue-cfi -mlong-calls-mmedium-calls -msdata

-mucb-mcount -mvolatile-cache

-malign-call-mauto-modify-reg -mbbit-peephole -mno-brcc

-mcase-vector-pcrel-mcompact-casesi -mno-cond-exec -mearly-cbranchsi

-mexpand-adddi-mindexed-loads -mlra -mlra-priority-none

-mlra-priority-compactmlra-priority-noncompact -mno-millicode

-mmixed-code -mq-class -mRcq-mRcw -msize-level=level

-mtune=cpu -mmultcost=num-munalign-prob-threshold=probability

ARMOptions

-mapcs-frame -mno-apcs-frame

-mabi=name

-mapcs-stack-check-mno-apcs-stack-check

-mapcs-float -mno-apcs-float

-mapcs-reentrant-mno-apcs-reentrant

-msched-prolog-mno-sched-prolog

-mlittle-endian -mbig-endian-mwords-little-endian

-mfloat-abi=name

-mfp16-format=name-mthumb-interwork -mno-thumb-interwork

-mcpu=name -march=name-mfpu=name

-mstructure-size-boundary=n

-mabort-on-noreturn

-mlong-calls -mno-long-calls

-msingle-pic-base -mno-single-pic-base

-mpic-register=reg

-mnop-fun-dllimport

-mpoke-function-name

-mthumb -marm

-mtpcs-frame-mtpcs-leaf-frame

-mcaller-super-interworking-mcallee-super-interworking

-mtp=name-mtls-dialect=dialect

-mword-relocations

-mfix-cortex-m3-ldrd

-munaligned-access

-mneon-for-64bits

-mslow-flash-data

-mrestrict-it

AVROptions

-mmcu=mcu -maccumulate-args-mbranch-cost=cost

-mcall-prologues -mint8-mno-interrupts -mrelax

-mstrict-X -mtiny-stack-Waddr-space-convert

BlackfinOptions

-mcpu=cpu[-sirevision]

-msim-momit-leaf-frame-pointer -mno-omit-leaf-frame-pointer

-mspecld-anomaly-mno-specld-anomaly -mcsync-anomaly -mno-csync-anomaly

-mlow-64k -mno-low64k-mstack-check-l1 -mid-shared-library

-mno-id-shared-library-mshared-library-id=n

-mleaf-id-shared-library-mno-leaf-id-shared-library

-msep-data -mno-sep-data-mlong-calls -mno-long-calls

-mfast-fp -minline-plt-mmulticore -mcorea -mcoreb -msdram

-micplb

C6XOptions

-mbig-endian -mlittle-endian-march=cpu

-msim -msdata=sdata-type

CRISOptions

-mcpu=cpu -march=cpu-mtune=cpu

-mmax-stack-frame=n-melinux-stacksize=n

-metrax4 -metrax100 -mpdebug-mcc-init -mno-side-effects

-mstack-align -mdata-align-mconst-align

-m32-bit -m16-bit -m8-bit-mno-prologue-epilogue -mno-gotplt

-melf -maout -melinux -mlinux-sim -sim2

-mmul-bug-workaround-mno-mul-bug-workaround

CR16Options

-mmac

-mcr16cplus -mcr16c

-msim -mint32 -mbit-ops-mdata-model=model

DarwinOptions

-all_load -allowable_client-arch -arch_errors_fatal

-arch_only -bind_at_load -bundle-bundle_loader

-client_name-compatibility_version -current_version

-dead_strip

-dependency-file -dylib_file-dylinker_install_name

-dynamic -dynamiclib-exported_symbols_list

-filelist -flat_namespace-force_cpusubtype_ALL

-force_flat_namespace -headerpad_max_install_names

-iframework

-image_base -init-install_name -keep_private_externs

-multi_module-multiply_defined -multiply_defined_unused

-noall_load-no_dead_strip_inits_and_terms

-nofixprebinding -nomultidefs-noprebind -noseglinkedit

-pagezero_size -prebind-prebind_all_twolevel_modules

-private_bundle-read_only_relocs -sectalign

-sectobjectsymbols -whyload-seg1addr

-sectcreate-sectobjectsymbols -sectorder

-segaddr -segs_read_only_addr-segs_read_write_addr

-seg_addr_table-seg_addr_table_filename -seglinkedit

-segprot -segs_read_only_addr-segs_read_write_addr

-single_module -static-sub_library -sub_umbrella

-twolevel_namespace -umbrella-undefined

-unexported_symbols_list-weak_reference_mismatches

-whatsloaded -F -gused -gfull-mmacosx-version-min=version

-mkernel -mone-byte-bool

DECAlpha Options

-mno-fp-regs -msoft-float

-mieee -mieee-with-inexact-mieee-conformant

-mfp-trap-mode=mode-mfp-rounding-mode=mode

-mtrap-precision=mode-mbuild-constants

-mcpu=cpu-type-mtune=cpu-type

-mbwx -mmax -mfix -mcix

-mfloat-vax -mfloat-ieee

-mexplicit-relocs-msmall-data -mlarge-data

-msmall-text -mlarge-text

-mmemory-latency=time

FR30Options

-msmall-model -mno-lsim

FRVOptions

-mgpr-32 -mgpr-64 -mfpr-32-mfpr-64

-mhard-float -msoft-float

-malloc-cc -mfixed-cc -mdword-mno-dword

-mdouble -mno-double

-mmedia -mno-media -mmuladd-mno-muladd

-mfdpic -minline-plt-mgprel-ro -multilib-library-pic

-mlinked-fp -mlong-calls-malign-labels

-mlibrary-pic -macc-4 -macc-8

-mpack -mno-pack -mno-eflags-mcond-move -mno-cond-move

-moptimize-membar-mno-optimize-membar

-mscc -mno-scc -mcond-exec-mno-cond-exec

-mvliw-branch-mno-vliw-branch

-mmulti-cond-exec-mno-multi-cond-exec -mnested-cond-exec

-mno-nested-cond-exec-mtomcat-stats

-mTLS -mtls

-mcpu=cpu

GNU/LinuxOptions

-mglibc -muclibc -mbionic-mandroid

-tno-android-cc-tno-android-ld

H8/300Options

-mrelax -mh -ms -mn -mexr-mno-exr -mint32 -malign-300

HPPAOptions

-march=architecture-type

-mdisable-fpregs-mdisable-indexing

-mfast-indirect-calls -mgas-mgnu-ld -mhp-ld

-mfixed-range=register-range

-mjump-in-delay -mlinker-opt-mlong-calls

-mlong-load-store-mno-disable-fpregs

-mno-disable-indexing-mno-fast-indirect-calls -mno-gas

-mno-jump-in-delay-mno-long-load-store

-mno-portable-runtime-mno-soft-float

-mno-space-regs -msoft-float-mpa-risc-1-0

-mpa-risc-1-1 -mpa-risc-2-0-mportable-runtime

-mschedule=cpu-type-mspace-regs -msio -mwsio

-munix=unix-std -nolibdld-static -threads

i386and x86-64 Options

-mtune=cpu-type -march=cpu-type

-mtune-ctrl=feature-list-mdump-tune-features -mno-default

-mfpmath=unit

-masm=dialect-mno-fancy-math-387

-mno-fp-ret-in-387-msoft-float

-mno-wide-multiply -mrtd-malign-double

-mpreferred-stack-boundary=num

-mincoming-stack-boundary=num

-mcld -mcx16 -msahf -mmovbe-mcrc32

-mrecip -mrecip=opt

-mvzeroupper -mprefer-avx128

-mmmx -msse -msse2 -msse3-mssse3 -msse4.1 -msse4.2 -msse4 -mavx

-mavx2 -mavx512f -mavx512pf-mavx512er -mavx512cd -msha

-maes -mpclmul -mfsgsbase-mrdrnd -mf16c -mfma -mprefetchwt1

-msse4a -m3dnow -mpopcnt-mabm -mbmi -mtbm -mfma4 -mxop -mlzcnt

-mbmi2 -mfxsr -mxsave-mxsaveopt -mrtm -mlwp -mthreads

-mno-align-stringops-minline-all-stringops

-minline-stringops-dynamically-mstringop-strategy=alg

-mmemcpy-strategy=strategy-mmemset-strategy=strategy -mpush-args -maccumulate-

outgoing-args-m128bit-long-double

-m96bit-long-double-mlong-double-64 -mlong-double-80 -mlong-double-128

-mregparm=num -msseregparm

-mveclibabi=type-mvect8-ret-in-mem

-mpc32 -mpc64 -mpc80-mstackrealign

-momit-leaf-frame-pointer-mno-red-zone -mno-tls-direct-seg-refs

-mcmodel=code-model-mabi=name -maddress-mode=mode

-m32 -m64 -mx32 -m16-mlarge-data-threshold=num

-msse2avx -mfentry-m8bit-idiv

-mavx256-split-unaligned-load-mavx256-split-unaligned-store

-mstack-protector-guard=guard

i386and x86-64 Windows Options

-mconsole -mcygwin-mno-cygwin -mdll

-mnop-fun-dllimport -mthread

-municode -mwin32 -mwindows-fno-set-stack-executable

IA-64Options

-mbig-endian -mlittle-endian-mgnu-as -mgnu-ld -mno-pic

-mvolatile-asm-stop-mregister-names -msdata -mno-sdata

-mconstant-gp -mauto-pic-mfused-madd

-minline-float-divide-min-latency

-minline-float-divide-max-throughput

-mno-inline-float-divide

-minline-int-divide-min-latency

-minline-int-divide-max-throughput

-mno-inline-int-divide

-minline-sqrt-min-latency-minline-sqrt-max-throughput

-mno-inline-sqrt

-mdwarf2-asm-mearly-stop-bits

-mfixed-range=register-range-mtls-size=tls-size

-mtune=cpu-type -milp32-mlp64

-msched-br-data-spec-msched-ar-data-spec -msched-control-spec

-msched-br-in-data-spec-msched-ar-in-data-spec -msched-in-control-spec

-msched-spec-ldc-msched-spec-control-ldc

-msched-prefer-non-data-spec-insns-msched-prefer-non-control-spec-insns

-msched-stop-bits-after-every-cycle-msched-count-spec-in-critical-path

-msel-sched-dont-check-control-spec-msched-fp-mem-deps-zero-cost

-msched-max-memory-insns-hard-limit-msched-max-memory-insns=max-insns

LM32Options

-mbarrel-shift-enabled-mdivide-enabled -mmultiply-enabled

-msign-extend-enabled-muser-enabled

M32R/DOptions

-m32r2 -m32rx -m32r

-mdebug

-malign-loops-mno-align-loops

-missue-rate=number

-mbranch-cost=number

-mmodel=code-size-model-type

-msdata=sdata-type

-mno-flush-func-mflush-func=name

-mno-flush-trap-mflush-trap=number

-G num

M32COptions

-mcpu=cpu -msim-memregs=number

M680x0Options

-march=arch -mcpu=cpu-mtune=tune -m68000 -m68020 -m68020-40 -m68020-60 -

m68030 -m68040

-m68060 -mcpu32 -m5200-m5206e -m528x -m5307 -m5407

-mcfv4e -mbitfield-mno-bitfield -mc68000 -mc68020

-mnobitfield -mrtd -mno-rtd-mdiv -mno-div -mshort

-mno-short -mhard-float-m68881 -msoft-float -mpcrel

-malign-int -mstrict-align-msep-data -mno-sep-data

-mshared-library-id=n-mid-shared-library -mno-id-shared-library

-mxgot -mno-xgot

MCoreOptions

-mhardlit -mno-hardlit -mdiv-mno-div -mrelax-immediates

-mno-relax-immediates-mwide-bitfields -mno-wide-bitfields

-m4byte-functions-mno-4byte-functions -mcallgraph-data

-mno-callgraph-data-mslow-bytes -mno-slow-bytes -mno-lsim

-mlittle-endian -mbig-endian-m210 -m340 -mstack-increment

MePOptions

-mabsdiff -mall-opts-maverage -mbased=n -mbitops

-mc=n -mclip -mconfig=name-mcop -mcop32 -mcop64 -mivc2

-mdc -mdiv -meb -mel-mio-volatile -ml -mleadz -mm -mminmax

-mmult -mno-opts -mrepeat -ms-msatur -msdram -msim -msimnovec -mtf

-mtiny=n

MicroBlazeOptions

-msoft-float -mhard-float-msmall-divides -mcpu=cpu

-mmemcpy -mxl-soft-mul-mxl-soft-div -mxl-barrel-shift

-mxl-pattern-compare-mxl-stack-check -mxl-gp-opt -mno-clearbss

-mxl-multiply-high -mxl-float-convert-mxl-float-sqrt

-mbig-endian -mlittle-endian-mxl-reorder -mxl-mode-app-model

MIPSOptions

-EL -EB -march=arch-mtune=arch

-mips1 -mips2 -mips3 -mips4-mips32 -mips32r2

-mips64 -mips64r2

-mips16 -mno-mips16-mflip-mips16

-minterlink-compressed-mno-interlink-compressed

-minterlink-mips16-mno-interlink-mips16

-mabi=abi -mabicalls-mno-abicalls

-mshared -mno-shared -mplt-mno-plt -mxgot -mno-xgot

-mgp32 -mgp64 -mfp32 -mfp64-mhard-float -msoft-float

-mno-float -msingle-float-mdouble-float

-mabs=mode -mnan=encoding

-mdsp -mno-dsp -mdspr2-mno-dspr2

-mmcu -mmno-mcu

-meva -mno-eva

-mvirt -mno-virt

-mmicromips -mno-micromips

-mfpu=fpu-type

-msmartmips -mno-smartmips

-mpaired-single-mno-paired-single -mdmx -mno-mdmx

-mips3d -mno-mips3d -mmt -mno-mt-mllsc -mno-llsc

-mlong64 -mlong32 -msym32-mno-sym32

-Gnum -mlocal-sdata-mno-local-sdata

-mextern-sdata-mno-extern-sdata -mgpopt -mno-gopt

-membedded-data-mno-embedded-data

-muninit-const-in-rodata-mno-uninit-const-in-rodata

-mcode-readable=setting

-msplit-addresses-mno-split-addresses

-mexplicit-relocs-mno-explicit-relocs

-mcheck-zero-division-mno-check-zero-division

-mdivide-traps-mdivide-breaks

-mmemcpy -mno-memcpy-mlong-calls -mno-long-calls

-mmad -mno-mad -mimadd-mno-imadd -mfused-madd -mno-fused-madd -nocpp

-mfix-24k -mno-fix-24k

-mfix-r4000 -mno-fix-r4000-mfix-r4400 -mno-fix-r4400

-mfix-r10000 -mno-fix-r10000-mfix-rm7000 -mno-fix-rm7000

-mfix-vr4120 -mno-fix-vr4120

-mfix-vr4130 -mno-fix-vr4130-mfix-sb1 -mno-fix-sb1

-mflush-func=func-mno-flush-func

-mbranch-cost=num-mbranch-likely -mno-branch-likely

-mfp-exceptions-mno-fp-exceptions

-mvr4130-align-mno-vr4130-align -msynci -mno-synci

-mrelax-pic-calls-mno-relax-pic-calls -mmcount-ra-address

MMIXOptions

-mlibfuncs -mno-libfuncs -mepsilon-mno-epsilon -mabi=gnu

-mabi=mmixware -mzero-extend-mknuthdiv -mtoplevel-symbols

-melf -mbranch-predict-mno-branch-predict -mbase-addresses

-mno-base-addresses-msingle-exit -mno-single-exit

MN10300Options

-mmult-bug -mno-mult-bug

-mno-am33 -mam33 -mam33-2-mam34

-mtune=cpu-type

-mreturn-pointer-on-d0

-mno-crt0 -mrelax -mliw-msetlb

MoxieOptions

-meb -mel -mno-crt0

MSP430Options

-msim -masm-hex -mmcu= -mcpu=-mlarge -msmall -mrelax

-mhwmult=

NDS32Options

-mbig-endian -mlittle-endian

-mreduced-regs -mfull-regs

-mcmov -mno-cmov

-mperf-ext -mno-perf-ext

-mv3push -mno-v3push

-m16bit -mno-16bit

-mgp-direct -mno-gp-direct

-misr-vector-size=num

-mcache-block-size=num

-march=arch

-mforce-fp-as-gp-mforbid-fp-as-gp

-mex9 -mctor-dtor -mrelax

NiosII Options

-G num -mgpopt -mno-gpopt-mel -meb

-mno-bypass-cache-mbypass-cache

-mno-cache-volatile-mcache-volatile

-mno-fast-sw-div-mfast-sw-div

-mhw-mul -mno-hw-mul-mhw-mulx -mno-hw-mulx -mno-hw-div -mhw-div

-mcustom-insn=N-mno-custom-insn

-mcustom-fpu-cfg=name

-mhal -msmallc-msys-crt0=name -msys-lib=name

PDP-11Options

-mfpu -msoft-float -mac0-mno-ac0 -m40 -m45 -m10

-mbcopy -mbcopy-builtin-mint32 -mno-int16

-mint16 -mno-int32 -mfloat32-mno-float64

-mfloat64 -mno-float32-mabshi -mno-abshi

-mbranch-expensive-mbranch-cheap

-munix-asm -mdec-asm

picoChipOptions

-mae=ae_type-mvliw-lookahead=N

-msymbol-as-address-mno-inefficient-warnings

PowerPCOptions See RS/6000 and PowerPC Options.

RL78Options

-msim -mmul=none -mmul=g13-mmul=rl78

RS/6000and PowerPC Options

-mcpu=cpu-type

-mtune=cpu-type

-mcmodel=code-model

-mpowerpc64

-maltivec -mno-altivec

-mpowerpc-gpopt-mno-powerpc-gpopt

-mpowerpc-gfxopt-mno-powerpc-gfxopt

-mmfcrf -mno-mfcrf -mpopcntb-mno-popcntb -mpopcntd -mno-popcntd

-mfprnd -mno-fprnd

-mcmpb -mno-cmpb -mmfpgpr-mno-mfpgpr -mhard-dfp -mno-hard-dfp

-mfull-toc -mminimal-toc-mno-fp-in-toc -mno-sum-in-toc

-m64 -m32 -mxl-compat-mno-xl-compat -mpe

-malign-power -malign-natural

-msoft-float -mhard-float-mmultiple -mno-multiple

-msingle-float -mdouble-float-msimple-fpu

-mstring -mno-string -mupdate-mno-update

-mavoid-indexed-addresses-mno-avoid-indexed-addresses

-mfused-madd -mno-fused-madd-mbit-align -mno-bit-align

-mstrict-align-mno-strict-align -mrelocatable

-mno-relocatable -mrelocatable-lib-mno-relocatable-lib

-mtoc -mno-toc -mlittle-mlittle-endian -mbig -mbig-endian

-mdynamic-no-pic -maltivec-mswdiv -msingle-pic-base

-mprioritize-restricted-insns=priority

-msched-costly-dep=dependence_type

-minsert-sched-nops=scheme

-mcall-sysv -mcall-netbsd

-maix-struct-return-msvr4-struct-return

-mabi=abi-type -msecure-plt-mbss-plt

-mblock-move-inline-limit=num

-misel -mno-isel

-misel=yes -misel=no

-mspe -mno-spe

-mspe=yes -mspe=no

-mpaired

-mgen-cell-microcode-mwarn-cell-microcode

-mvrsave -mno-vrsave

-mmulhw -mno-mulhw

-mdlmzb -mno-dlmzb

-mfloat-gprs=yes-mfloat-gprs=no -mfloat-gprs=single -mfloat-gprs=double

-mprototype -mno-prototype

-msim -mmvme -mads-myellowknife -memb -msdata

-msdata=opt -mvxworks -G num-pthread

-mrecip -mrecip=opt -mno-recip-mrecip-precision

-mno-recip-precision

-mveclibabi=type -mfriz-mno-friz

-mpointers-to-nested-functions-mno-pointers-to-nested-functions

-msave-toc-indirect-mno-save-toc-indirect

-mpower8-fusion-mno-mpower8-fusion -mpower8-vector -mno-power8-vector

-mcrypto -mno-crypto-mdirect-move -mno-direct-move

-mquad-memory-mno-quad-memory

-mquad-memory-atomic-mno-quad-memory-atomic

-mcompat-align-parm-mno-compat-align-parm

RXOptions

-m64bit-doubles-m32bit-doubles -fpu -nofpu

-mcpu=

-mbig-endian-data-mlittle-endian-data

-msmall-data

-msim -mno-sim

-mas100-syntax-mno-as100-syntax

-mrelax

-mmax-constant-size=

-mint-register=

-mpid

-mno-warn-multiple-fast-interrupts

-msave-acc-in-interrupts

S/390and zSeries Options

-mtune=cpu-type-march=cpu-type

-mhard-float -msoft-float-mhard-dfp -mno-hard-dfp

-mlong-double-64-mlong-double-128

-mbackchain -mno-backchain-mpacked-stack -mno-packed-stack

-msmall-exec -mno-small-exec-mmvcle -mno-mvcle

-m64 -m31 -mdebug -mno-debug-mesa -mzarch

-mtpf-trace -mno-tpf-trace-mfused-madd -mno-fused-madd

-mwarn-framesize-mwarn-dynamicstack -mstack-size -mstack-guard

-mhotpatch[=halfwords]-mno-hotpatch

ScoreOptions

-meb -mel

-mnhwloop

-muls

-mmac

-mscore5 -mscore5u -mscore7-mscore7d

SHOptions

-m1 -m2 -m2e

-m2a-nofpu -m2a-single-only-m2a-single -m2a

-m3 -m3e

-m4-nofpu -m4-single-only-m4-single -m4

-m4a-nofpu -m4a-single-only-m4a-single -m4a -m4al

-m5-64media -m5-64media-nofpu

-m5-32media -m5-32media-nofpu

-m5-compact -m5-compact-nofpu

-mb -ml -mdalign -mrelax

-mbigtable -mfmovd -mhitachi-mrenesas -mno-renesas -mnomacsave

-mieee -mno-ieee -mbitops-misize -minline-ic_invalidate -mpadstruct

-mspace -mprefergot-musermode -multcost=number -mdiv=strategy

-mdivsi3_libfunc=name-mfixed-range=register-range

-mindexed-addressing-mgettrcost=number -mpt-fixed

-maccumulate-outgoing-args-minvalid-symbols

-matomic-model=atomic-model

-mbranch-cost=num -mzdcbranch-mno-zdcbranch

-mfused-madd -mno-fused-madd-mfsca -mno-fsca -mfsrra -mno-fsrra

-mpretend-cmove -mtas

Solaris2 Options

-mclear-hwcap-mno-clear-hwcap -mimpure-text -mno-impure-text

-pthreads -pthread

SPARCOptions

-mcpu=cpu-type

-mtune=cpu-type

-mcmodel=code-model

-mmemory-model=mem-model

-m32 -m64 -mapp-regs-mno-app-regs

-mfaster-structs-mno-faster-structs -mflat -mno-flat

-mfpu -mno-fpu -mhard-float-msoft-float

-mhard-quad-float-msoft-quad-float

-mstack-bias -mno-stack-bias

-munaligned-doubles-mno-unaligned-doubles

-muser-mode -mno-user-mode

-mv8plus -mno-v8plus -mvis-mno-vis

-mvis2 -mno-vis2 -mvis3-mno-vis3

-mcbcond -mno-cbcond

-mfmaf -mno-fmaf -mpopc-mno-popc

-mfix-at697f -mfix-ut699

SPUOptions

-mwarn-reloc -merror-reloc

-msafe-dma -munsafe-dma

-mbranch-hints

-msmall-mem -mlarge-mem –mstdmain

-mfixed-range=register-range

-mea32 -mea64

-maddress-space-conversion-mno-address-space-conversion

-mcache-size=cache-size

-matomic-updates-mno-atomic-updates

SystemV Options

-Qy -Qn -YP,paths -Ym,dir

TILE-GxOptions

-mcpu=CPU -m32 -m64-mbig-endian -mlittle-endian

-mcmodel=code-model

TILEProOptions

-mcpu=cpu -m32

V850Options

-mlong-calls -mno-long-calls-mep -mno-ep

-mprolog-function-mno-prolog-function -mspace

-mtda=n -msda=n -mzda=n

-mapp-regs -mno-app-regs

-mdisable-callt-mno-disable-callt

-mv850e2v3 -mv850e2 -mv850e1-mv850es

-mv850e -mv850 -mv850e3v5

-mloop

-mrelax

-mlong-jumps

-msoft-float

-mhard-float

-mgcc-abi

-mrh850-abi

-mbig-switch

VAXOptions

-mg -mgnu -munix

VMSOptions

-mvms-return-codes-mdebug-main=prefix -mmalloc64

-mpointer-size=size

VxWorksOptions

-mrtp -non-static -Bstatic-Bdynamic

-Xbind-lazy -Xbind-now

x86-64Options See i386 and x86-64 Options.

Xstormy16Options

-msim

XtensaOptions

-mconst16 -mno-const16

-mfused-madd -mno-fused-madd

-mforce-no-pic

-mserialize-volatile-mno-serialize-volatile

-mtext-section-literals-mno-text-section-literals

-mtarget-align-mno-target-align

-mlongcalls -mno-longcalls

zSeriesOptions See S/390 and zSeries Options

    15.代碼生成選項(用於控制代碼的生成)

-fcall-saved-reg-fcall-used-reg

-ffixed-reg -fexceptions

-fnon-call-exceptions -fdelete-dead-exceptions-funwind-tables

-fasynchronous-unwind-tables

-fno-gnu-unique

-finhibit-size-directive-finstrument-functions

-finstrument-functions-exclude-function-list=sym,sym,...

-finstrument-functions-exclude-file-list=file,file,...

-fno-common -fno-ident

-fpcc-struct-return -fpic-fPIC -fpie -fPIE

-fno-jump-tables

-frecord-gcc-switches

-freg-struct-return-fshort-enums

-fshort-double -fshort-wchar

-fverbose-asm-fpack-struct[=n] -fstack-check

-fstack-limit-register=reg-fstack-limit-symbol=sym

-fno-stack-limit-fsplit-stack

-fleading-underscore-ftls-model=model

-fstack-reuse=reuse_level

-ftrapv -fwrapv-fbounds-check

-fvisibility-fstrict-volatile-bitfields -fsync-libcalls

以上是GCC.9.1的命令行選項,接下來將對每類選項進行介紹,關於機器相關的選項,我們主要關注常見,常用的機器,計劃主要關注:ARM選項,i386 and x86-64 選項,i386 and x86-64 Windows 選項,IA-64選項。對於其他選項可以參考GCC官方手冊。我們也不關注Objective-C和Objective-C++語言的選項


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章