cuốn sách gpt4 ai đã làm

Làm cách nào để viết macro C mở rộng thành khối macro `#ifdef... #endif`?

In lại Tác giả: Vũ trụ không gian Thời gian cập nhật: 2023-11-04 00:16:11 29 4
mua khóa gpt4 Nike

Tôi muốn chèn một số câu lệnh đầu ra gỡ lỗi vào cơ sở mã C lớn. Các câu lệnh đầu ra gỡ lỗi này sẽ được điều khiển bởi các công tắc tùy chọn trình biên dịch.

Câu lệnh đầu ra gỡ lỗi trông như thế này:

#ifdef GỠ LỖI_FLAG
In(một sốSymbol)
#endif

Để tiết kiệm một số thao tác gõ, tôi tự hỏi liệu tôi có thể xác định một macro đơn giản mở rộng sang khối câu lệnh đầu ra gỡ lỗi ở trên không?

Ví dụ:

#define DBG_MACRO(someSymbol) (thứ gì đó có thể mở rộng lên trên)

câu trả lời hay nhất

Bạn không thể đặt các chỉ thị tiền xử lý bên trong macro tiền xử lý.

Tuy nhiên, không có gì ngăn cản bạn xác định macro mở rộng thành Không có:

#ifdef GỠ LỖI_FLAG
# xác định Print(x) Print(x)
#else
# xác định In(x)
#endif

// Mở rộng thành câu lệnh trống nếu DEBUG_FLAG không được đặt và
// gọi tới lệnh In(thứ gì đó) nếu DEBUG_FLAG được đặt.
In (cái gì đó);

Điều trên phụ thuộc vào In là một hàm được khai báo/xác định. Nếu nó được đặt khi xác định macro DEBUG_FLAG, macro sẽ được "thay thế" bởi chính nó, nhưng việc mở rộng bộ tiền xử lý C không đệ quy, do đó việc mở rộng chỉ xảy ra một lần, gây ra lệnh gọi In.

Giới thiệu về c - Làm cách nào để viết macro C mở rộng thành khối macro `#ifdef... #endif`? , chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/38710957/

29 4 0
không gian vũ trụ
Hồ sơ

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá taxi Didi miễn phí
Phiếu giảm giá taxi Didi
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress