2016-05-17 12 views
5

Tôi có một dòng trong mã của tôi trông như thế này:Làm thế nào để kiểm tra xem một macro giống như hàm được xác định?

#ifndef MACRO(n) 

Điều này thực sự hoạt động tốt trên hầu hết các trình biên dịch. Tuy nhiên, điều này không thành công trên Solaris, bởi vì cú pháp chính thức là # ifndef identifier new-line groupopt và dấu ngoặc đơn không được phép trong số nhận dạng.

Cách thích hợp để kiểm tra xem macro này có được xác định không?

+0

Để làm rõ. Bạn đã biết cách kiểm tra xem nó đã được xác định chưa, thông qua 'ifdef MACRO'. Bạn muốn biết cụ thể nếu nó là một macro * chức năng *? –

Trả lời

7

Bạn không cần (n), thực sự gcc sẽ phàn nàn nếu bạn sử dụng nó:

warning: extra tokens at end of #ifndef directive 

này là bởi vì #ifndef hy vọng một định danh không biểu hiện, (n) có lẽ bỏ qua tiền xử lý

Nó là đủ để đơn giản kiểm tra với tên định nghĩa macro:

#ifndef MACRO 
Các vấn đề liên quan