5

Khi sử dụng câu lệnh như #if TRUE, tôi nên làm gì? Một lời giải thích sẽ rất được đánh giá cao! Tôi hiểu cách hoạt động của #if 1, nhưng nó mang lại kết quả hoàn toàn khác trong mã của tôi so với sử dụng #if TRUE. Tôi hiểu #if là một chỉ thị có điều kiện và điều đó ngụ ý; nó chỉ là phần TRUE (hoặc FALSE) mà tôi không hiểu. Dường như việc sử dụng nó theo cách này không bao giờ thực thi mã theo sau câu lệnh. Dưới đây là ví dụ:C++, sử dụng #if TRUE chỉ thị có điều kiện

#if TRUE 
    cout << "true" << endl; 
#endif 

#if FALSE 
    cout << "false" << endl; 
#endif 

Tôi chưa bao giờ thấy chữ "true" hoặc "false" được in trên màn hình và sử dụng Visual Studio, câu lệnh bên trong sẽ tự động chuyển sang màu xám.

+0

Bạn chỉ cần kiểm tra xem các macro đó có được khai báo hay không. Thông thường trong WinDef.h chúng được khai báo sẽ được sử dụng với BOOL. –

+0

Có phải "TRUE" không phải là một từ dành riêng không? – Hieli

+2

Không, nó chỉ là một macro được khai báo với #define win Win.h (xem http://msdn.microsoft.com/en-us/library/windows/desktop/aa383751(v=vs.85).aspx). Từ dành riêng là "true" (chữ thường). –

Trả lời

5

Bộ tiền xử lý sẽ bao gồm/loại trừ nội dung của khối #if #endif tùy thuộc vào thời tiết biểu thức sau khi #if đánh giá là đúng hoặc sai.

#if TRUE sẽ chỉ đánh giá là true nếu

  • vĩ mô TRUE được định nghĩa
  • giá trị của TRUE! = 0

Trong ví dụ của bạn không TRUE cũng không FALSE được định nghĩa vì vậy cả hai khối là sai và bị loại trừ.

+0

Cảm ơn bạn rất nhiều! Điều này rất hữu ích. – Hieli

0

Để xem true hoặc false in bạn cần xác định họ:

#define TRUE 1 
#define FALSE 1 

Bây giờ #if TRUE#if FALSE sẽ được giống như #if 1.

+1

Tôi nghĩ đó là lần đầu tiên tôi thấy 'FALSE' được định nghĩa là 1 ... – FatalError

+0

Sửa đổi câu trả lời để xác định FALSE là 0 –

+0

Nhưng sau đó câu lệnh sau nó không còn đúng;). – FatalError

4

TRUEFALSEmacro trong Windows, nhưng khai báo trong WinDef.h.

Nếu bạn bao gồm tiêu đề, bạn sẽ thấy rằng TRUE1FALSE0. Vì vậy, câu lệnh đầu tiên nên thực thi, câu lệnh thứ hai không nên.

Nếu bạn không bao gồm tiêu đề, cả hai tiêu đề sẽ không được xác định và cả hai câu lệnh sẽ không được thực thi.

+0

Được đánh giá cao! Cảm ơn bạn! – Hieli

Các vấn đề liên quan