Đây là lệnh unifdef 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
unifdef, sự thất bại - loại bỏ các điều kiện tiền xử lý khỏi mã
SYNOPSIS
unifdef [-bBcdehKkmnsStV] [-Icon đường] [-[Tôisym[=val]] [- [i] Usym] ... [-f phiền não] [-x {012}]
[-M câu sau] [-o ô uế] [trong tập tin ...]
sự thất bại [-Icon đường] ... hồ sơ
MÔ TẢ
Sản phẩm unifdef tiện ích xử lý có chọn lọc có điều kiện cpp(1) chỉ thị. Nó loại bỏ khỏi một
gửi cả chỉ thị và bất kỳ văn bản bổ sung nào mà chúng chỉ định sẽ bị xóa, trong khi
nếu không thì để tập tin một mình.
Sản phẩm unifdef tiện ích hoạt động trên #nếu, #ifdef, #ifndef, #elif, #khácvà #endif dòng, sử dụng
macro được chỉ định trong -D và -U tùy chọn dòng lệnh hoặc trong -f các tập tin định nghĩa. Một chỉ thị
được xử lý nếu các thông số kỹ thuật macro đủ để cung cấp giá trị xác định cho
biểu thức điều khiển. Nếu kết quả là sai, lệnh và các dòng sau
kiểm soát bị loại bỏ. Nếu kết quả là true, chỉ lệnh bị loại bỏ. Một #ifdef or
#ifndef Chỉ thị được chuyển qua không thay đổi nếu macro điều khiển của nó không được chỉ định.
Bất kì #nếu or #elif biểu thức điều khiển có giá trị không xác định hoặc giá trị đó unifdef không thể phân tích cú pháp
được chuyển qua không thay đổi. Theo mặc định, unifdef bỏ qua #nếu và #elif dòng với hằng số
biểu thức; nó có thể được yêu cầu xử lý chúng bằng cách chỉ định -k cờ trên dòng lệnh.
Nó hiểu một tập hợp con được sử dụng phổ biến của cú pháp biểu thức cho #nếu và #elif dòng:
hằng số nguyên, giá trị nguyên của macro được xác định trên dòng lệnh, xác định()
nhà điều hành, các nhà khai thác !, <, >, <=, >=, ==, !=, &&, ||, và các biểu thức có dấu ngoặc đơn. MỘT
loại đánh giá "ngắn mạch" được sử dụng cho && toán tử: nếu một trong hai toán hạng là
chắc chắn sai thì kết quả là sai, ngay cả khi giá trị của toán hạng khác là
không xác định. Tương tự, nếu một trong hai toán hạng của || chắc chắn là đúng thì kết quả là đúng.
Khi đánh giá một biểu thức, unifdef không mở rộng macro trước. Giá trị của macro
phải là một số đơn giản, không phải là một biểu thức. Cho phép một hình thức chuyển hướng hạn chế, trong đó
giá trị của một macro là tên của macro khác.
Trong hầu hết các trường hợp, unifdef không phân biệt giữa các macro giống đối tượng (không có đối số)
và macro giống như hàm (có đối số). Một lệnh gọi macro giống như hàm có thể xuất hiện trong
#nếu và #elif biểu thức điều khiển. Nếu macro không được xác định rõ ràng hoặc được xác định
với -D gắn cờ trên dòng lệnh hoặc với #định nghĩa trong một -f tệp định nghĩa, nó
các đối số bị bỏ qua. Nếu macro không được xác định rõ ràng trên dòng lệnh với -U
cờ, hoặc với #undef trong một -f tệp định nghĩa, nó có thể không có bất kỳ đối số nào vì điều này
dẫn đến lỗi cú pháp.
Sản phẩm unifdef tiện ích hiểu vừa đủ về C để biết khi nào một trong các lệnh
không hoạt động vì nó nằm bên trong một nhận xét hoặc bị ảnh hưởng bởi một dòng tiếp tục có dấu gạch chéo ngược. Nó
phát hiện các chỉ thị tiền xử lý được định dạng bất thường và biết khi nào bố cục quá kỳ quặc đối với
nó để xử lý.
Một tập lệnh được gọi là sự thất bại có thể được sử dụng để loại bỏ tất cả các điều kiện cpp(1) chỉ thị từ một
tập tin. Nó sử dụng unifdef -s và cpp -dM để nhận danh sách tất cả các macro kiểm soát và
định nghĩa (hoặc thiếu chúng), sau đó gọi ra unifdef với các đối số thích hợp để xử lý
tập tin.
LỰA CHỌN
-Dsym=val
Chỉ định rằng macro được xác định cho một giá trị nhất định.
-Dsym Chỉ định rằng macro được xác định cho giá trị 1.
-Usym Chỉ định rằng một macro không được xác định.
Nếu cùng một macro xuất hiện trong nhiều đối số, thì lần xuất hiện cuối cùng sẽ chiếm ưu thế.
-Tôisym[=val]
-iUsym Chuỗi C, nhận xét và sự liên tục của dòng bị bỏ qua trong #ifdef và #ifndef
các khối được điều khiển bởi các macro được chỉ định với các tùy chọn này.
-f phiền não
Tập tin phiền não chứa #định nghĩa và #undef chỉ thị tiền xử lý, có
hiệu ứng tương tự như tương ứng -D và -U đối số dòng lệnh. Bạn có thể có
nhiều -f các đối số và trộn chúng với -D và -U tranh luận; ghi đè các tùy chọn sau này
những cái trước đó.
Mỗi chỉ thị phải nằm trên một dòng. Định nghĩa macro giống đối tượng (không có
đối số) được đặt thành giá trị đã cho. Định nghĩa macro giống hàm (với
đối số) được coi như thể chúng được đặt thành 1.
-b Thay thế các dòng đã xóa bằng các dòng trống thay vì xóa chúng. Loại trừ lẫn nhau
với -B tùy chọn.
-B Nén các dòng trống xung quanh phần đã xóa. Loại trừ lẫn nhau với -b
tùy chọn.
-c Phần bổ sung, tức là, các dòng đã bị xóa hoặc để trống được giữ lại và
ngược lại.
-d Bật tính năng in thông báo gỡ lỗi.
-e Theo mặc định, unifdef sẽ báo lỗi nếu cần xóa bộ xử lý trước
chỉ thị kéo dài nhiều hơn một dòng, ví dụ: nếu nó có một nhận xét nhiều dòng
treo đầu bên phải của nó. Các -e cờ làm cho nó bỏ qua dòng thay vào đó.
-h Trợ giúp in.
-Icon đường Chỉ định cho sự thất bại một nơi bổ sung để tìm kiếm #include các tập tin. Tùy chọn này
bị bỏ qua bởi unifdef để tương thích với cpp(1) và để đơn giản hóa
thực hiện sự thất bại.
-K Luôn coi kết quả của && và || toán tử không xác định nếu một trong hai toán hạng là
không xác định, thay vì đoản mạch khi toán hạng không xác định không thể ảnh hưởng đến kết quả.
Tùy chọn này là để tương thích với các phiên bản cũ hơn của unifdef.
-k Quy trình xét duyệt #nếu và #elif dòng với biểu thức không đổi. Theo mặc định, các phần
được kiểm soát bởi các dòng như vậy được chuyển qua không thay đổi vì chúng thường bắt đầu
“#If 0” và được sử dụng như một loại nhận xét để phác họa sự phát triển trong tương lai hoặc quá khứ.
Sẽ là thô lỗ nếu bóc chúng ra, giống như đối với những bình luận thông thường.
-m Sửa đổi một hoặc nhiều tệp đầu vào tại chỗ.
-M câu sau
Sửa đổi các tệp đầu vào tại chỗ và giữ các bản sao lưu của các tệp gốc bằng cách thêm vào
câu sau vào tên tệp đầu vào.
-n Thêm chỉ thị # dòng vào đầu ra sau bất kỳ dòng nào đã bị xóa, để xảy ra lỗi
được tạo ra khi biên dịch tệp đầu ra tương ứng với số dòng trong đầu vào
tập tin.
-o ô uế
Ghi đầu ra vào tệp ô uế thay vì đầu ra tiêu chuẩn khi xử lý
một tập tin.
-s Thay vì xử lý tệp đầu vào như bình thường, tùy chọn này gây ra unifdef để sản xuất
danh sách các macro được sử dụng trong các biểu thức điều khiển chỉ thị tiền xử lý.
-S Cũng giống như các -s nhưng độ sâu lồng nhau của mỗi macro cũng được in. Đây là
hữu ích để tìm ra số lượng các kết hợp phụ thuộc lẫn nhau có thể có
macro xác định / không xác định.
-t Tắt phân tích cú pháp cho chuỗi C, nhận xét và sự liên tục của dòng, điều này rất hữu ích
đối với văn bản thuần túy. Đây là một phiên bản chăn của -Tôi và -iU cờ.
-V Chi tiết phiên bản in.
-x {012}
Đặt chế độ trạng thái thoát thành không, một hoặc hai. Xem EXIT TÌNH TRẠNG phần bên dưới cho
chi tiết.
Sản phẩm unifdef tiện ích lấy đầu vào của nó từ tiêu chuẩn nếu không có hồ sơ tranh luận. Bạn phải dùng
các -m or -M các tùy chọn nếu có nhiều tệp đầu vào. Bạn có thể chỉ định inut từ stdin hoặc
xuất ra stdout với '-'.
Sản phẩm unifdef tiện ích hoạt động độc đáo với -Dsym tùy chọn khác(1).
EXIT TÌNH TRẠNG
Trong cách sử dụng bình thường, unifdef trạng thái thoát của tiện ích phụ thuộc vào chế độ được đặt bằng cách sử dụng -x
tùy chọn.
Nếu chế độ thoát là XNUMX (mặc định) thì unifdef thoát với trạng thái 0 nếu đầu ra là
bản sao chính xác của đầu vào hoặc với trạng thái 1 nếu đầu ra khác.
Nếu chế độ thoát là một, unifdef thoát với trạng thái 1 nếu đầu ra không được sửa đổi hoặc 0 nếu nó
khác nhau.
Nếu chế độ thoát là hai, unifdef thoát với trạng thái bằng không trong cả hai trường hợp.
Trong tất cả các chế độ thoát, unifdef thoát với trạng thái 2 nếu có lỗi.
Trạng thái thoát là 0 nếu -h or -V các tùy chọn dòng lệnh được đưa ra.
CHẨN ĐOÁN
Quá nhiều cấp độ lồng vào nhau.
Không thích hợp #elif, #khác or #endif.
Dòng điều khiển tiền xử lý bị xáo trộn.
EOF sớm (với số dòng của số gần đây nhất chưa kết thúc #nếu).
EOF trong bình luận.
Sử dụng unifdef trực tuyến bằng các dịch vụ onworks.net