Tiếng AnhTiếng PhápTiếng ĐứcTiếng ÝBồ Đào NhaTiếng NgaTiếng Tây Ban Nha

Biểu tượng yêu thích OnWorks

mips64el-linux-gnuabi64-cpp - Trực tuyến trên đám mây

Chạy mips64el-linux-gnuabi64-cpp trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks trên Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

Đây là lệnh mips64el-linux-gnuabi64-cpp có thể chạy trong nhà cung cấp dịch vụ lưu trữ miễn phí OnWorks bằng cách sử dụng một trong nhiều máy trạm trực tuyến miễn phí của chúng tôi như Ubuntu Online, Fedora Online, trình giả lập trực tuyến Windows hoặc trình mô phỏng trực tuyến MAC OS

CHƯƠNG TRÌNH:

TÊN


cpp - Bộ tiền xử lý C

SYNOPSIS


cpp [-Dvĩ mô[=định nghĩa] ...] [-Uvĩ mô]
[-Idir...] [-cài dẫndir...]
[-Wcảnh báo...]
[-M|-MM] [-MG] [-MF tên tập tin]
[-MP] [-MQ mục tiêu...]
[-MT mục tiêu...]
[-P] [-fno-working-directory]
[-x Ngôn ngữ] [-std =Tiêu chuẩn]
trong tập tin ô uế

Chỉ những tùy chọn hữu ích nhất được liệt kê ở đây; xem phần còn lại bên dưới.

MÔ TẢ


Bộ tiền xử lý C, thường được gọi là cpp, Là một vĩ mô bộ vi xử lý được sử dụng tự động bởi
trình biên dịch C để chuyển đổi chương trình của bạn trước khi biên dịch. Nó được gọi là macro
bộ xử lý vì nó cho phép bạn xác định macro, là những từ viết tắt ngắn gọn cho dài hơn
cấu trúc.

Bộ tiền xử lý C chỉ được sử dụng với mã nguồn C, C ++ và Objective-C.
Trong quá khứ, nó đã bị lạm dụng như một trình xử lý văn bản chung. Nó sẽ bị nghẹt đầu vào mà
không tuân theo quy tắc từ vựng của C. Ví dụ, dấu nháy đơn sẽ được hiểu là
bắt đầu của hằng số ký tự và gây ra lỗi. Ngoài ra, bạn không thể dựa vào nó
bảo toàn các đặc điểm của đầu vào không có ý nghĩa đối với các ngôn ngữ thuộc họ C.
Nếu một Makefile được xử lý trước, tất cả các tab cứng sẽ bị xóa và Makefile sẽ
không hoạt động.

Phải nói rằng, bạn thường có thể tránh xa việc sử dụng cpp trên những thứ không phải là C. Khác
Các ngôn ngữ lập trình Algol-ish thường an toàn (Pascal, Ada, v.v.) Hợp ngữ cũng vậy, với
thận trọng. -traditional-cpp chế độ bảo tồn nhiều khoảng trắng hơn và hơn thế nữa
dễ dãi. Nhiều vấn đề có thể tránh được bằng cách viết bình luận kiểu C hoặc C ++
thay vì nhận xét bằng ngôn ngữ mẹ đẻ và giữ macro đơn giản.

Bất cứ khi nào có thể, bạn nên sử dụng bộ xử lý trước hướng đến ngôn ngữ bạn đang viết
trong. Các phiên bản hiện đại của trình hợp dịch GNU có các phương tiện vĩ mô. Cấp cao nhất
ngôn ngữ lập trình có cơ chế biên dịch và bao gồm có điều kiện riêng. Nếu như
nếu không, hãy thử một bộ xử lý văn bản chung thực sự, chẳng hạn như GNU M4.

Bộ tiền xử lý C khác nhau ở một số chi tiết. Sách hướng dẫn này thảo luận về bộ tiền xử lý GNU C,
cung cấp một tập hợp nhỏ các tính năng của Tiêu chuẩn ISO C. Ở chế độ mặc định, GNU
Bộ tiền xử lý C không thực hiện một số điều theo yêu cầu của tiêu chuẩn. Đây là những tính năng
hiếm khi được sử dụng, nếu đã từng, và có thể gây ra những thay đổi đáng ngạc nhiên đối với ý nghĩa của một
chương trình không mong đợi chúng. Để có được Tiêu chuẩn ISO C nghiêm ngặt, bạn nên sử dụng
-std = c90, -std = c99 or -std = c11 tùy chọn, tùy thuộc vào phiên bản tiêu chuẩn mà bạn
muốn. Để nhận được tất cả các chẩn đoán bắt buộc, bạn cũng phải sử dụng -pedantic.

Hướng dẫn này mô tả hoạt động của bộ tiền xử lý ISO. Để giảm thiểu tình trạng vô cớ
sự khác biệt, trong đó hành vi của bộ tiền xử lý ISO không xung đột với
ngữ nghĩa, bộ tiền xử lý truyền thống sẽ hoạt động theo cùng một cách. Sự đa dạng
sự khác biệt tồn tại được trình bày chi tiết trong phần Truyền thống Chế độ.

Để rõ ràng, trừ khi có ghi chú khác, các tham chiếu đến CPP trong hướng dẫn này, hãy tham khảo GNU CPP.

LỰA CHỌN


Bộ tiền xử lý C yêu cầu hai tên tệp làm đối số, trong tập tinô uế. Các
bộ tiền xử lý đọc trong tập tin cùng với bất kỳ tệp nào khác mà nó chỉ định với #include. Tất cả
đầu ra được tạo bởi các tệp đầu vào kết hợp được viết bằng ô uế.

Hay trong tập tin or ô uế có lẽ -, mà như trong tập tin có nghĩa là đọc từ đầu vào tiêu chuẩn và
as ô uế nghĩa là ghi vào đầu ra tiêu chuẩn. Ngoài ra, nếu một trong hai tệp bị bỏ qua, điều đó có nghĩa là
giống như nếu - đã được chỉ định cho tệp đó.

Trừ khi có ghi chú khác, hoặc tùy chọn kết thúc bằng =, tất cả các tùy chọn có đối số có thể
có đối số đó xuất hiện ngay sau tùy chọn hoặc có khoảng trắng giữa
tùy chọn và đối số: -Nếu-I foo có tác dụng tương tự.

Nhiều tùy chọn có tên gồm nhiều chữ cái; do đó nhiều tùy chọn gồm một chữ cái có thể không phải be
được nhóm lại: -dM rất khác với -d -M.

-D tên
Xác định trước tên dưới dạng macro, với định nghĩa 1.

-D tên=định nghĩa
Nội dung của định nghĩa được mã hóa và xử lý như thể chúng xuất hiện trong
dịch giai đoạn ba trong một #định nghĩa chỉ thị. Đặc biệt, định nghĩa sẽ là
bị cắt ngắn bởi các ký tự dòng mới được nhúng.

Nếu bạn đang gọi bộ xử lý tiền xử lý từ một chương trình tương tự như shell hoặc shell, bạn có thể cần
sử dụng cú pháp trích dẫn của shell để bảo vệ các ký tự chẳng hạn như dấu cách có
nghĩa trong cú pháp shell.

Nếu bạn muốn xác định một macro giống hàm trên dòng lệnh, hãy viết đối số của nó
liệt kê có dấu ngoặc bao quanh trước dấu bằng (nếu có). Dấu ngoặc đơn là
có ý nghĩa với hầu hết các shell, vì vậy bạn sẽ cần phải trích dẫn tùy chọn. Với shcsh,
-NS'tên(args ...)=định nghĩa' công trình.

-D-U các tùy chọn được xử lý theo thứ tự chúng được đưa ra trên dòng lệnh. Tất cả các
-imacros hồ sơbao gồm hồ sơ các tùy chọn được xử lý sau khi tất cả -D-U tùy chọn.

-U tên
Hủy bỏ mọi định nghĩa trước đây về tên, được tích hợp sẵn hoặc được cung cấp với -D tùy chọn.

-undef
Không xác định trước bất kỳ macro nào dành riêng cho hệ thống hoặc macro cụ thể cho GCC. Tiêu chuẩn được xác định trước
macro vẫn được xác định.

-I dir
Thêm thư mục dir vào danh sách các thư mục được tìm kiếm các tệp tiêu đề.

Thư mục được đặt tên bởi -I được tìm kiếm trước khi hệ thống tiêu chuẩn bao gồm các thư mục.
Nếu thư mục dir là một hệ thống tiêu chuẩn bao gồm thư mục, tùy chọn được bỏ qua để
đảm bảo rằng thứ tự tìm kiếm mặc định cho các thư mục hệ thống và cách xử lý đặc biệt
của tiêu đề hệ thống không bị đánh bại. Nếu như dir bắt đầu bằng "=", sau đó "=" sẽ là
được thay thế bằng tiền tố sysroot; Thấy chưa --sysroot-isysroot.

-o hồ sơ
Ghi đầu ra vào hồ sơ. Điều này cũng giống như chỉ định hồ sơ là lựa chọn không phải thứ hai
tranh luận với cpp. gcc có cách giải thích khác về đối số không phải tùy chọn thứ hai,
vì vậy bạn phải sử dụng -o để chỉ định tệp đầu ra.

-Tường
Bật tất cả các cảnh báo tùy chọn mong muốn cho mã bình thường. Hiện tại cái này
is -Nhận xét, -Tranh, -Wmultichar và cảnh báo về việc quảng cáo số nguyên gây ra
thay đổi dấu hiệu trong biểu thức "#if". Lưu ý rằng nhiều cảnh báo của bộ xử lý trước
được bật theo mặc định và không có tùy chọn để kiểm soát chúng.

-Nhận xét
-Kể từ
Cảnh báo bất cứ khi nào chuỗi bắt đầu nhận xét /* xuất hiện trong một /* bình luận, hoặc bất cứ khi nào
dấu gạch chéo ngược-dòng mới xuất hiện trong một // bình luận. (Cả hai hình thức đều có tác dụng như nhau.)

-Tranh
Hầu hết các đoạn trong bình luận không thể ảnh hưởng đến ý nghĩa của chương trình. Tuy nhiên, một
biểu đồ sẽ tạo thành một dòng mới thoát (?? / ở cuối dòng) có thể, bởi
thay đổi nơi bắt đầu hoặc kết thúc nhận xét. Do đó, chỉ những đoạn sẽ hình thành
dòng mới thoát tạo ra cảnh báo bên trong một bình luận.

Tùy chọn này được ngụ ý bởi -Tường. Nếu -Tường không được cung cấp, tùy chọn này vẫn được bật
trừ khi các phần tử được kích hoạt. Để nhận được chuyển đổi theo đoạn mà không có cảnh báo, nhưng nhận được
khác -Tường cảnh báo, sử dụng -trigraphs -Tường -Không có đồ thị.

-Điều kiện
Cảnh báo về một số cấu trúc hoạt động khác nhau trong ISO truyền thống và ISO C. Ngoài ra
cảnh báo về cấu trúc ISO C không có tương đương C truyền thống và có vấn đề
cấu trúc nên tránh.

-Wundef
Cảnh báo bất cứ khi nào gặp phải mã định danh không phải là macro trong #nếu chỉ thị,
bên ngoài xác định. Các định danh như vậy được thay thế bằng số không.

-Wunused-macro
Cảnh báo về các macro được xác định trong tệp chính không được sử dụng. Macro là đã sử dụng nếu nó là
mở rộng hoặc kiểm tra sự tồn tại ít nhất một lần. Bộ xử lý trước cũng sẽ cảnh báo nếu
macro chưa được sử dụng tại thời điểm nó được xác định lại hoặc chưa được xác định.

Macro dựng sẵn, macro được xác định trên dòng lệnh và macro được xác định trong bao gồm
các tập tin không được cảnh báo về.

Lưu ý: Nếu macro thực sự được sử dụng, nhưng chỉ được sử dụng trong các khối điều kiện bị bỏ qua, thì
CPP sẽ báo cáo nó là chưa sử dụng. Để tránh cảnh báo trong trường hợp như vậy, bạn có thể cải thiện
phạm vi định nghĩa của macro, ví dụ, bằng cách chuyển nó vào định nghĩa đầu tiên bị bỏ qua
khối. Ngoài ra, bạn có thể cung cấp cách sử dụng giả với những thứ như:

#if đã xác định_macro_causing_the_warning
#endif

-Wendif-label
Cảnh báo bất cứ khi nào #khác hoặc một #endif được theo sau bởi văn bản. Điều này thường xảy ra trong
mã của biểu mẫu

# nếu FOO
hữu ích. Cảm ơn !
#else FOO
hữu ích. Cảm ơn !
#endif FOO

"FOO" thứ hai và thứ ba nên có trong nhận xét, nhưng thường không có trong các chương trình cũ hơn.
Cảnh báo này được bật theo mặc định.

- Lỗi
Thực hiện tất cả các cảnh báo thành lỗi khó. Mã nguồn kích hoạt cảnh báo sẽ là
từ chối.

-Các tiêu đề hệ thống
Đưa ra cảnh báo cho mã trong tiêu đề hệ thống. Những thứ này thường không hữu ích trong việc tìm kiếm
lỗi trong mã của riêng bạn, do đó bị loại bỏ. Nếu bạn chịu trách nhiệm về hệ thống
thư viện, bạn có thể muốn xem chúng.

-w Loại bỏ tất cả các cảnh báo, bao gồm cả những cảnh báo mà GNU CPP đưa ra theo mặc định.

-pedantic
Đưa ra tất cả các chẩn đoán bắt buộc được liệt kê trong tiêu chuẩn C. Một số trong số họ còn lại
theo mặc định, vì chúng thường kích hoạt trên mã vô hại.

-pedantic-error
Đưa ra tất cả các chẩn đoán bắt buộc và biến tất cả các chẩn đoán bắt buộc thành lỗi.
Điều này bao gồm các chẩn đoán bắt buộc mà GCC đưa ra mà không có -pedantic nhưng đối xử như
cảnh báo.

-M Thay vì xuất ra kết quả của quá trình tiền xử lý, hãy xuất ra một quy tắc phù hợp với làm cho
mô tả các phần phụ thuộc của tệp nguồn chính. Bộ tiền xử lý xuất ra một
làm cho quy tắc chứa tên tệp đối tượng cho tệp nguồn đó, dấu hai chấm và tên
của tất cả các tệp được bao gồm, bao gồm cả những tệp đến từ bao gồm or -imacros chỉ huy-
tùy chọn dòng.

Trừ khi được chỉ định rõ ràng (với -MT or -MQ), tên tệp đối tượng bao gồm
tên của tệp nguồn với bất kỳ hậu tố nào được thay thế bằng hậu tố tệp đối tượng và bằng bất kỳ
phần thư mục hàng đầu bị xóa. Nếu có nhiều tệp được bao gồm thì quy tắc là
chia thành nhiều dòng bằng cách sử dụng \-dòng mới. Quy tắc không có lệnh.

Tùy chọn này không ngăn chặn đầu ra gỡ lỗi của bộ xử lý trước, chẳng hạn như -dM. Tránh
trộn kết quả gỡ lỗi như vậy với các quy tắc phụ thuộc, bạn nên chỉ định rõ ràng
tệp đầu ra phụ thuộc với -MFhoặc sử dụng một biến môi trường như
DEPENDENCIES_OUTPUT. Đầu ra gỡ lỗi sẽ vẫn được gửi đến luồng đầu ra thông thường như
Bình thường.

Đi qua -M cho người lái xe ngụ ý -Evà ngăn chặn các cảnh báo với hàm ý -w.

-MM Như -M nhưng không đề cập đến các tệp tiêu đề được tìm thấy trong thư mục tiêu đề hệ thống,
cũng không phải các tệp tiêu đề được bao gồm, trực tiếp hoặc gián tiếp, từ tiêu đề đó.

Điều này ngụ ý rằng việc lựa chọn dấu ngoặc nhọn hoặc dấu ngoặc kép trong dấu ngoặc #include
Bản thân chỉ thị không xác định liệu tiêu đề đó có xuất hiện trong -MM
sản lượng phụ thuộc. Đây là một thay đổi nhỏ về ngữ nghĩa từ phiên bản GCC 3.0 và
sớm hơn.

-MF hồ sơ
Khi sử dụng với -M or -MM, chỉ định một tệp để ghi các phụ thuộc vào. Nếu không -MF
chuyển đổi được cung cấp cho bộ xử lý trước gửi các quy tắc đến cùng một nơi mà nó sẽ gửi
đầu ra được xử lý trước.

Khi được sử dụng với các tùy chọn trình điều khiển -MD or -MMD, -MF ghi đè phần phụ thuộc mặc định
tập tin đầu ra.

-MG Cùng với một tùy chọn như -M yêu cầu tạo phụ thuộc, -MG giả định
các tệp tiêu đề bị thiếu là các tệp được tạo và thêm chúng vào danh sách phụ thuộc mà không có
nêu ra một lỗi. Tên tệp phụ thuộc được lấy trực tiếp từ "#include"
chỉ thị mà không có đường dẫn trước nào. -MG cũng ngăn chặn đầu ra được xử lý trước, như một
thiếu tập tin tiêu đề làm cho điều này vô dụng.

Tính năng này được sử dụng để cập nhật tự động các tệp trang điểm.

-MP Tùy chọn này hướng dẫn CPP thêm một mục tiêu giả mạo cho từng phụ thuộc khác với
tệp chính, khiến mỗi tệp không phụ thuộc vào tệp nào. Các quy tắc giả này giải quyết các lỗi
làm cho cho nếu bạn xóa các tệp tiêu đề mà không cập nhật makefile khớp.

Đây là đầu ra điển hình:

test.o: test.c test.h

test.h:

-MT mục tiêu
Thay đổi mục tiêu của quy tắc được tạo ra bởi quá trình tạo phụ thuộc. Theo mặc định, CPP mất
tên của tệp đầu vào chính, xóa mọi thành phần thư mục và bất kỳ hậu tố tệp nào
như là .cvà thêm hậu tố đối tượng thông thường của nền tảng. Kết quả là mục tiêu.

An -MT tùy chọn sẽ đặt mục tiêu chính xác là chuỗi bạn chỉ định. Nếu bạn muốn
nhiều mục tiêu, bạn có thể chỉ định chúng như một đối số duy nhất để -MThoặc sử dụng nhiều
-MT tùy chọn.

Ví dụ, -MT '$ (objpfx) foo.o' có thể cho

$ (objpfx) foo.o: foo.c

-MQ mục tiêu
Giống như -MT, nhưng nó trích dẫn bất kỳ ký tự nào đặc biệt để Make.
-MQ '$ (objpfx) foo.o' cho

$$ (objpfx) foo.o: foo.c

Mục tiêu mặc định được tự động trích dẫn, như thể nó được đưa ra với -MQ.

-MD -MD tương đương với -M -MF hồ sơ, ngoại trừ việc -E không được ngụ ý. Người lái xe
xác định hồ sơ dựa trên liệu một -o tùy chọn được đưa ra. Nếu có, trình điều khiển sử dụng
đối số nhưng với hậu tố là .d, nếu không, nó lấy tên của tệp đầu vào,
loại bỏ bất kỳ thành phần và hậu tố thư mục nào và áp dụng .d hậu tố.

If -MD được sử dụng cùng với -E, bất kì -o chuyển đổi được hiểu là để chỉ định
tệp đầu ra phụ thuộc, nhưng nếu được sử dụng mà không có -E, mỗi -o được hiểu là chỉ định một
tệp đối tượng đích.

từ -E không được ngụ ý, -MD có thể được sử dụng để tạo tệp đầu ra phụ thuộc dưới dạng
tác dụng phụ của quá trình biên dịch.

-MMD
Như -MD ngoại trừ chỉ đề cập đến các tệp tiêu đề người dùng, không đề cập đến các tệp tiêu đề hệ thống.

-x c
-x c ++
-x mục tiêu-c
-x người lắp ráp-với-cpp
Chỉ định ngôn ngữ nguồn: C, C ++, Objective-C hoặc hợp ngữ. Điều này không có gì để làm
với sự phù hợp hoặc mở rộng tiêu chuẩn; nó chỉ chọn cú pháp cơ sở để
chờ đợi. Nếu bạn không đưa ra tùy chọn nào trong số này, cpp sẽ suy ra ngôn ngữ từ
phần mở rộng của tệp nguồn: .c, . Cc, .m, hoặc là .S. Một số tiện ích mở rộng phổ biến khác cho
C ++ và hợp ngữ cũng được công nhận. Nếu cpp không nhận ra phần mở rộng, nó
sẽ coi tệp là C; đây là chế độ chung nhất.

Lưu ý: Các phiên bản cpp trước đây đã chấp nhận một -lang tùy chọn đã chọn cả hai
ngôn ngữ và mức độ tuân thủ các tiêu chuẩn. Tùy chọn này đã bị xóa, bởi vì
nó xung đột với -l tùy chọn.

-std =Tiêu chuẩn
-ansi
Chỉ định tiêu chuẩn mà mã phải tuân theo. Hiện CPP biết về C
và tiêu chuẩn C ++; những người khác có thể được thêm vào trong tương lai.

Tiêu chuẩn có thể là một trong số:

"c90"
"c89"
"iso9899: 1990"
Tiêu chuẩn ISO C từ năm 1990. c90 là cách viết tắt thông thường cho phiên bản này của
chuẩn mực.

Mô hình -ansi tùy chọn tương đương với -std = c90.

"iso9899: 199409"
Tiêu chuẩn C 1990, được sửa đổi vào năm 1994.

"iso9899: 1999"
"c99"
"iso9899: 199x"
"c9x"
Tiêu chuẩn ISO C sửa đổi, được xuất bản vào tháng 1999 năm XNUMX. Trước khi xuất bản, điều này
được gọi là C9X.

"iso9899: 2011"
"c11"
"c1x"
Tiêu chuẩn ISO C sửa đổi, được xuất bản vào tháng 2011 năm XNUMX. Trước khi xuất bản, điều này
được gọi là C1X.

"gnu90"
"gnu89"
Tiêu chuẩn C 1990 cộng với các phần mở rộng GNU. Đây là mặc định.

"gnu99"
"gnu9x"
Tiêu chuẩn C 1999 cộng với các phần mở rộng GNU.

"gnu11"
"gnu1x"
Tiêu chuẩn C 2011 cộng với các phần mở rộng GNU.

"c ++ 98"
Tiêu chuẩn ISO C ++ 1998 cùng với các sửa đổi.

"gnu ++ 98"
Giống như -std = c ++ 98 cộng với các phần mở rộng GNU. Đây là mặc định cho mã C ++.

-TÔI- Tách đường dẫn bao gồm. Bất kỳ thư mục nào được chỉ định với -I tùy chọn trước đây -TÔI- đang
chỉ tìm kiếm các tiêu đề được yêu cầu bằng "#include"tập tin""; họ không được tìm kiếm
"#bao gồmtệp> ". Nếu các thư mục bổ sung được chỉ định với -I các tùy chọn sau
-TÔI-, những thư mục đó được tìm kiếm cho tất cả #include chỉ thị.

Ngoài ra, -TÔI- ngăn cản việc sử dụng thư mục của thư mục tệp hiện tại như
thư mục tìm kiếm đầu tiên cho "#include"tập tin"".

Tùy chọn này đã không được chấp nhận.

-nostdinc
Không tìm kiếm các thư mục hệ thống tiêu chuẩn cho các tệp tiêu đề. Chỉ các thư mục
bạn đã chỉ định với -I tùy chọn (và thư mục của tệp hiện tại, nếu
thích hợp) được tìm kiếm.

-nostdinc ++
Không tìm kiếm tệp tiêu đề trong C ++ - thư mục tiêu chuẩn cụ thể, nhưng vẫn làm
tìm kiếm các thư mục tiêu chuẩn khác. (Tùy chọn này được sử dụng khi xây dựng C ++
thư viện.)

bao gồm hồ sơ
Quy trình xét duyệt hồ sơ như thể "#include" tệp "" xuất hiện dưới dạng dòng đầu tiên của nguồn chính
tập tin. Tuy nhiên, thư mục đầu tiên được tìm kiếm hồ sơ bộ tiền xử lý có hoạt động không
thư mục thay vì of thư mục chứa tệp nguồn chính. Nếu không tìm thấy
ở đó, nó được tìm kiếm trong phần còn lại của chuỗi tìm kiếm "#include" ... "" dưới dạng
Bình thường.

Nếu nhiều bao gồm các tùy chọn được đưa ra, các tệp được bao gồm theo thứ tự
xuất hiện trên dòng lệnh.

-imacros hồ sơ
Chính xác như bao gồm, ngoại trừ bất kỳ đầu ra nào được tạo ra bằng cách quét hồ sơ được ném
xa. Macro nó định nghĩa vẫn được xác định. Điều này cho phép bạn có được tất cả các macro
từ một tiêu đề mà không xử lý các khai báo của nó.

Tất cả các tệp được chỉ định bởi -imacros được xử lý trước khi tất cả các tệp được chỉ định bởi bao gồm.

-idirafter dir
Tìm kiếm dir cho các tệp tiêu đề, nhưng hãy làm điều đó sau khi tất cả các thư mục được chỉ định với -I
thư mục hệ thống tiêu chuẩn đã hết. dir được coi như một hệ thống bao gồm
danh mục. Nếu như dir bắt đầu bằng "=", sau đó "=" sẽ được thay thế bằng sysroot
tiếp đầu ngữ; Thấy chưa --sysroot-isysroot.

-iprefix tiếp đầu ngữ
Chỉ định tiếp đầu ngữ làm tiền tố cho tiếp theo -iwithprefix tùy chọn. Nếu tiền tố
đại diện cho một thư mục, bạn nên bao gồm phần cuối cùng /.

-iwithprefix dir
-iwithprefixbefore dir
Nối dir đến tiền tố được chỉ định trước đó với -iprefixvà thêm kết quả
thư mục đến đường dẫn tìm kiếm bao gồm. -iwithprefixbefore đặt nó ở cùng một nơi -I
sẽ; -iwithprefix đặt nó ở đâu -idirafter sẽ.

-isysroot dir
Tùy chọn này giống như --sysroot nhưng chỉ áp dụng cho các tệp tiêu đề (ngoại trừ
Darwin nhắm mục tiêu, nơi nó áp dụng cho cả tệp tiêu đề và thư viện). Xem
--sysroot để biết thêm thông tin.

-imultilib dir
Sử dụng dir dưới dạng thư mục con của thư mục chứa tiêu đề C ++ dành riêng cho mục tiêu.

-isystem dir
Tìm kiếm dir cho các tệp tiêu đề, sau tất cả các thư mục được chỉ định bởi -I nhưng trước khi
thư mục hệ thống tiêu chuẩn. Đánh dấu nó là một thư mục hệ thống, để nó giống nhau
đối xử đặc biệt như được áp dụng cho các thư mục hệ thống tiêu chuẩn.

If dir bắt đầu bằng "=", sau đó "=" sẽ được thay thế bằng tiền tố sysroot; Thấy chưa
--sysroot-isysroot.

-cài dẫn dir
Tìm kiếm dir chỉ dành cho các tệp tiêu đề được yêu cầu với "#include"tập tin""; họ không phải
đã tìm kiếm "#includetệp> ", trước tất cả các thư mục được chỉ định bởi -I và trước khi
thư mục hệ thống tiêu chuẩn.

If dir bắt đầu bằng "=", sau đó "=" sẽ được thay thế bằng tiền tố sysroot; Thấy chưa
--sysroot-isysroot.

-chỉ -fdirectives-only
Khi tiền xử lý, hãy xử lý các lệnh, nhưng không mở rộng macro.

Hành vi của tùy chọn phụ thuộc vào -E-được xử lý trước tùy chọn.

Với -E, tiền xử lý được giới hạn trong việc xử lý các lệnh như "#define",
"#ifdef" và "#error". Các hoạt động tiền xử lý khác, chẳng hạn như mở rộng macro và
chuyển đổi ba đoạn không được thực hiện. Ngoài ra, -dD tùy chọn là ngầm định
kích hoạt.

Với -được xử lý trước, định nghĩa trước của dòng lệnh và hầu hết các macro nội trang là
Vô hiệu hóa. Các macro như "__LINE__", phụ thuộc vào ngữ cảnh, được xử lý
thông thường. Điều này cho phép biên dịch các tệp được xử lý trước bằng "-E
-fdirectives-only ".

Với cả hai -E-được xử lý trước, các quy tắc cho -được xử lý trước được ưu tiên. Cái này
cho phép xử lý trước đầy đủ các tệp được xử lý trước bằng "-E
-fdirectives-only ".

-fdollars-trong-nhận dạng
Chấp nhận $ trong định danh.

-fextended-nhận dạng
Chấp nhận tên ký tự phổ biến trong số nhận dạng. Tùy chọn này được kích hoạt theo mặc định
cho C99 (và các phiên bản tiêu chuẩn C mới hơn) và C ++.

-fno-canonical-system-headers
Khi tiền xử lý, không rút ngắn đường dẫn tiêu đề hệ thống bằng chuẩn hóa.

-được xử lý trước
Cho bộ xử lý biết rằng tệp đầu vào đã được xử lý trước. Cái này
ngăn chặn những thứ như mở rộng macro, chuyển đổi đoạn, nối dòng mới thoát,
và xử lý hầu hết các chỉ thị. Bộ xử lý trước vẫn nhận ra và loại bỏ
nhận xét, để bạn có thể chuyển một tệp được xử lý trước với -C đến trình biên dịch mà không có
các vấn đề. Trong chế độ này, bộ xử lý tiền tích hợp không chỉ là một bộ xử lý tokenizer
cho giao diện người dùng.

-được xử lý trước là ngầm định nếu tệp đầu vào có một trong các phần mở rộng .i, .ii or .mi.
Đây là những tiện ích mở rộng mà GCC sử dụng cho các tệp được xử lý trước được tạo bởi -save-temps.

-ftabstop =chiều rộng
Đặt khoảng cách giữa các điểm dừng tab. Điều này giúp bộ xử lý tiền xử lý báo cáo đúng cột
số trong các cảnh báo hoặc lỗi, ngay cả khi các tab xuất hiện trên dòng. Nếu giá trị nhỏ hơn
hơn 1 hoặc lớn hơn 100, tùy chọn bị bỏ qua. Giá trị mặc định là 8.

-fdebug-cpp
Tùy chọn này chỉ hữu ích để gỡ lỗi GCC. Khi sử dụng với -E, kết xuất gỡ lỗi
thông tin về bản đồ vị trí. Mọi mã thông báo trong đầu ra được đặt trước bởi kết xuất của
bản đồ vị trí của nó. Kết xuất của bản đồ giữ vị trí của mã thông báo
sẽ là:

{"P": F ; "F": F ; "L": ;"NS": ;"NS": ;"NS": ; "E": , "loc": }

Khi sử dụng không có -E, tùy chọn này không có hiệu lực.

-ftrack-macro-mở rộng[=cấp]
Theo dõi vị trí của mã thông báo trên các mở rộng vĩ mô. Điều này cho phép trình biên dịch phát ra
chẩn đoán về ngăn xếp mở rộng macro hiện tại khi xảy ra lỗi biên dịch trong
một sự mở rộng vĩ mô. Sử dụng tùy chọn này làm cho bộ xử lý trước và trình biên dịch tiêu tốn
nhiều bộ nhớ hơn. Các cấp tham số có thể được sử dụng để chọn mức độ chính xác của mã thông báo
theo dõi vị trí do đó giảm mức tiêu thụ bộ nhớ nếu cần thiết. Giá trị 0 of
cấp hủy kích hoạt tùy chọn này giống như nếu không -ftrack-macro-mở rộng đã có mặt trên
dòng lệnh. Giá trị 1 theo dõi các vị trí mã thông báo ở chế độ xuống cấp vì lợi ích
chi phí bộ nhớ tối thiểu. Trong chế độ này, tất cả các mã thông báo do việc mở rộng
đối số của macro giống hàm có cùng vị trí. Giá trị 2 theo dõi mã thông báo
các vị trí hoàn toàn. Giá trị này là bộ nhớ đói nhất. Khi tùy chọn này được đưa ra
không có đối số, giá trị tham số mặc định là 2.

Lưu ý rằng "-ftrack-macro-expand = 2" được kích hoạt theo mặc định.

-fexec-charset =bảng chữ cái
Đặt bộ ký tự thực thi, được sử dụng cho chuỗi ký tự và hằng số ký tự. Mặc định
là UTF-8. bảng chữ cái có thể là bất kỳ mã hóa nào được hỗ trợ bởi thư viện "iconv" của hệ thống
công Việt Hằng ngày.

-fwide-executive-charset =bảng chữ cái
Đặt bộ ký tự thực thi rộng, được sử dụng cho các hằng số ký tự và chuỗi rộng.
Giá trị mặc định là UTF-32 hoặc UTF-16, tùy theo giá trị nào tương ứng với chiều rộng của "wchar_t". Như
với -fexec-charset, bảng chữ cái có thể là bất kỳ mã hóa nào được hỗ trợ bởi "iconv" của hệ thống
thông lệ thư viện; tuy nhiên, bạn sẽ gặp vấn đề với các bảng mã không phù hợp
chính xác trong "wchar_t".

-finput-charset =bảng chữ cái
Đặt bộ ký tự đầu vào, được sử dụng để dịch từ bộ ký tự của đầu vào
tệp vào bộ ký tự nguồn được GCC sử dụng. Nếu ngôn ngữ không chỉ định, hoặc GCC
không thể lấy thông tin này từ ngôn ngữ, mặc định là UTF-8. Điều này có thể là
bị ghi đè bởi ngôn ngữ hoặc tùy chọn dòng lệnh này. Hiện tại lệnh-
tùy chọn dòng được ưu tiên nếu có xung đột. bảng chữ cái có thể là bất kỳ mã hóa nào
được hỗ trợ bởi quy trình thư viện "iconv" của hệ thống.

-fworking-directory
Cho phép tạo dấu dòng trong đầu ra của bộ xử lý trước để cho phép trình biên dịch
biết thư mục làm việc hiện tại tại thời điểm tiền xử lý. Khi tùy chọn này là
được kích hoạt, bộ xử lý trước sẽ phát ra, sau bộ đánh dấu dòng ban đầu, bộ đánh dấu dòng thứ hai
với thư mục làm việc hiện tại, theo sau là hai dấu gạch chéo. GCC sẽ sử dụng cái này
thư mục, khi nó xuất hiện trong đầu vào được xử lý trước, khi thư mục được phát ra dưới dạng
thư mục làm việc hiện tại ở một số định dạng thông tin gỡ lỗi. Tùy chọn này là
được bật ngầm nếu thông tin gỡ lỗi được bật, nhưng điều này có thể bị hạn chế với
hình thức phủ định -fno-working-directory. Nếu -P cờ có trong lệnh
dòng, tùy chọn này không có hiệu lực, vì không có lệnh "#line" nào được phát ra.

-fno-show-column
Không in số cột trong chẩn đoán. Điều này có thể cần thiết nếu chẩn đoán
được quét bởi một chương trình không hiểu số cột, chẳng hạn như
dejagnu.

-A Thuộc tính=trả lời
Khẳng định với vị ngữ Thuộc tính và câu trả lời trả lời. Hình thức này là
ưa thích hình thức cũ hơn -A Thuộc tính(trả lời), vẫn được hỗ trợ, vì nó
không sử dụng các ký tự đặc biệt của shell.

-A -Thuộc tính=trả lời
Hủy một khẳng định với vị ngữ Thuộc tính và câu trả lời trả lời.

-dCHARS
PHÍ là một chuỗi gồm một hoặc nhiều ký tự sau đây và không được
trước dấu cách. Các ký tự khác được giải thích bởi trình biên dịch thích hợp, hoặc
dành riêng cho các phiên bản GCC trong tương lai, và do đó, bị bỏ qua một cách âm thầm. Nếu bạn chỉ định
nhân vật có hành vi xung đột, kết quả là không xác định.

M Thay vì đầu ra bình thường, hãy tạo một danh sách #định nghĩa chỉ thị cho tất cả
các macro được xác định trong quá trình thực thi bộ xử lý trước, bao gồm cả các macro được xác định trước
macro. Điều này cung cấp cho bạn một cách để tìm ra những gì được xác định trước trong phiên bản
bộ tiền xử lý. Giả sử bạn không có tệp foo.h, lệnh

chạm vào foo.h; cpp -dM foo.h

sẽ hiển thị tất cả các macro được xác định trước.

Nếu bạn sử dụng -dM không có -E Tùy chọn, -dM được hiểu như một từ đồng nghĩa với
-fdump-rtl-mach.

D Như M ngoại trừ hai khía cạnh: nó có không phải bao gồm các macro được xác định trước và nó
kết quả đầu ra cả hai các #định nghĩa chỉ thị và kết quả của quá trình tiền xử lý. Cả hai loại
của đầu ra chuyển đến tệp đầu ra tiêu chuẩn.

N Như D, nhưng chỉ phát ra các tên macro, không phát ra các tên mở rộng của chúng.

I Đầu ra #include chỉ thị ngoài kết quả của quá trình tiền xử lý.

U Như D ngoại trừ việc chỉ các macro được mở rộng hoặc có tính xác định được kiểm tra
trong chỉ thị tiền xử lý, là đầu ra; đầu ra bị trì hoãn cho đến khi sử dụng hoặc
thử nghiệm của vĩ mô; và #undef các chỉ thị cũng được xuất cho các macro được kiểm tra nhưng
không xác định tại thời điểm.

-P Ngăn chặn việc tạo dòng đánh dấu trong đầu ra từ bộ tiền xử lý. Đây có thể là
hữu ích khi chạy bộ tiền xử lý trên thứ gì đó không phải là mã C và sẽ được gửi
đến một chương trình có thể bị nhầm lẫn bởi các dấu dòng.

-C Không loại bỏ các bình luận. Tất cả các nhận xét được chuyển đến tệp đầu ra, ngoại trừ
đối với các nhận xét trong các lệnh đã xử lý, các nhận xét này sẽ bị xóa cùng với lệnh.

Bạn nên chuẩn bị cho các tác dụng phụ khi sử dụng -C; nó khiến bộ tiền xử lý
coi các bình luận như các mã thông báo theo đúng nghĩa của chúng. Ví dụ: các nhận xét xuất hiện tại
bắt đầu của những gì sẽ là một dòng chỉ thị có tác dụng biến dòng đó thành một
dòng nguồn thông thường, vì mã thông báo đầu tiên trên dòng không còn là #.

-CC Không loại bỏ nhận xét, kể cả khi mở rộng macro. Điều này giống như -C, ngoại trừ
rằng các nhận xét có trong macro cũng được chuyển đến tệp đầu ra, nơi
macro được mở rộng.

Ngoài những tác dụng phụ của -C tùy chọn, -CC tùy chọn gây ra tất cả C ++ - style
nhận xét bên trong macro sẽ được chuyển đổi thành nhận xét kiểu C. Điều này để ngăn chặn sau này
sử dụng macro đó từ việc vô tình nhận xét phần còn lại của dòng nguồn.

Mô hình -CC tùy chọn thường được sử dụng để hỗ trợ nhận xét lint.

-traditional-cpp
Cố gắng bắt chước hành vi của các bộ tiền xử lý C kiểu cũ, trái ngược với ISO C
bộ tiền xử lý.

-trigraphs
Xử lý trình tự phân đoạn.

-remap
Bật mã đặc biệt để hoạt động xung quanh các hệ thống tệp chỉ cho phép tệp rất ngắn
tên, chẳng hạn như MS-DOS.

--Cứu giúp
- mục tiêu-trợ giúp
In văn bản mô tả tất cả các tùy chọn dòng lệnh thay vì xử lý trước bất kỳ thứ gì.

-v Chế độ chi tiết. In ra số phiên bản của GNU CPP khi bắt đầu thực thi, và
báo cáo dạng cuối cùng của đường dẫn bao gồm.

-H In tên của mỗi tệp tiêu đề được sử dụng, ngoài các hoạt động bình thường khác. Mỗi
tên được thụt vào để hiển thị mức độ sâu trong #include xếp chồng lên nhau. Tiêu đề được biên dịch trước
các tệp cũng được in, ngay cả khi chúng được phát hiện là không hợp lệ; một biên dịch trước không hợp lệ
tệp tiêu đề được in bằng ...NS và một cái hợp lệ với ...! .

-phiên bản
--phiên bản
In ra số phiên bản của GNU CPP. Với một dấu gạch ngang, hãy tiến hành tiền xử lý như bình thường.
Với hai dấu gạch ngang, hãy thoát ra ngay lập tức.

MÔI TRƯỜNG


Phần này mô tả các biến môi trường ảnh hưởng đến cách CPP hoạt động. Bạn có thể
sử dụng chúng để chỉ định các thư mục hoặc tiền tố để sử dụng khi tìm kiếm các tệp bao gồm hoặc để
kiểm soát đầu ra phụ thuộc.

Lưu ý rằng bạn cũng có thể chỉ định địa điểm để tìm kiếm bằng các tùy chọn như -I, và kiểm soát
đầu ra phụ thuộc với các tùy chọn như -M. Các biến này được ưu tiên hơn các biến môi trường,
do đó được ưu tiên hơn cấu hình của GCC.

CPATH
C_INCLUDE_PATH
CPLUS_INCLUDE_PATH
OBJC_INCLUDE_PATH
Giá trị của mỗi biến là một danh sách các thư mục được phân tách bằng một ký tự đặc biệt, nhiều
như PATH, trong đó để tìm kiếm các tệp tiêu đề. Nhân vật đặc biệt,
"PATH_SEPARATOR", phụ thuộc vào mục tiêu và được xác định tại thời gian xây dựng GCC. Đối với Microsoft
Các mục tiêu dựa trên Windows, nó là một dấu chấm phẩy và đối với hầu hết các mục tiêu khác, nó là một
Đại tràng.

CPATH chỉ định một danh sách các thư mục được tìm kiếm như thể được chỉ định với -I, Nhưng
sau bất kỳ con đường nào được đưa ra với -I các tùy chọn trên dòng lệnh. Biến môi trường này
được sử dụng bất kể ngôn ngữ nào đang được xử lý trước.

Các biến môi trường còn lại chỉ áp dụng khi xử lý trước
ngôn ngữ chỉ định. Mỗi chỉ định một danh sách các thư mục được tìm kiếm như thể
được chỉ định với -isystem, nhưng sau bất kỳ đường dẫn nào được đưa ra với -isystem các tùy chọn trên
dòng lệnh.

Trong tất cả các biến này, một phần tử trống hướng dẫn trình biên dịch tìm kiếm hiện tại của nó
thư mục làm việc. Các phần tử trống có thể xuất hiện ở đầu hoặc cuối đường dẫn. Vì
ví dụ, nếu giá trị của CPATH là ": / special / include", có tác dụng tương tự như
-TÔI. -Tôi / đặc biệt / bao gồm.

DEPENDENCIES_OUTPUT
Nếu biến này được đặt, giá trị của nó sẽ chỉ định cách xuất các phần phụ thuộc cho Make based
trên các tệp tiêu đề không thuộc hệ thống được trình biên dịch xử lý. Tệp tiêu đề hệ thống là
bị bỏ qua trong đầu ra phụ thuộc.

Giá trị của DEPENDENCIES_OUTPUT có thể chỉ là một tên tệp, trong trường hợp đó, Quy tắc thực hiện
được ghi vào tệp đó, đoán tên đích từ tên tệp nguồn. Hoặc là
giá trị có thể có dạng hồ sơ mục tiêu, trong trường hợp đó các quy tắc được ghi vào tệp hồ sơ
sử dụng mục tiêu như tên mục tiêu.

Nói cách khác, biến môi trường này tương đương với việc kết hợp các tùy chọn -MM
-MF, với một tùy chọn -MT chuyển đổi quá.

SUNPRO_DEPENDENCIES
Biến này giống như DEPENDENCIES_OUTPUT (xem ở trên), ngoại trừ hệ thống đó
các tệp tiêu đề không bị bỏ qua, vì vậy nó ngụ ý -M chứ không phải là -MM. Tuy nhiên,
sự phụ thuộc vào tệp đầu vào chính bị bỏ qua.

Sử dụng mips64el-linux-gnuabi64-cpp trực tuyến bằng các dịch vụ onworks.net


Ad


Ad

Các chương trình trực tuyến Linux & Windows mới nhất