2010-02-08 34 views

Trả lời

50

Nơi ở bất cứ đâu:

#ifndef DEBUG 
#error Only Debug builds are supported 
#endif 
3

Nếu bạn chỉ đơn giản là muốn báo cáo một lỗi:

#ifdef RELEASE 
    #error Release mode not allowed 
#endif 

sẽ làm việc với hầu hết các trình biên dịch.

4

Bạn có thể sử dụng chỉ thị error cho điều đó. Các mã sau đây sẽ ném ra một lỗi tại thời gian biên dịch nếu DEBUG không được định nghĩa:

#ifndef DEBUG 
#error This is an error message 
#endif 
+0

Xin lỗi, tôi trộn pragma và lỗi khi gõ. Đã sửa trong câu trả lời. –

13

C cung cấp một tuyên bố #error, và hầu hết các trình biên dịch thêm một tuyên bố #warning. The gcc documentation recommends để trích dẫn tin nhắn.

+1

@Antonio Phải, không có đề xuất [khác] ở đó. Tôi đã thay thế liên kết bằng một tài liệu thành gcc. – philant

6

Có thể có điều gì đó tinh vi hơn, nhưng chỉ sao chép & dán các giải pháp trước đó. :-)

#ifdef DEBUG   
    #pragma message ("Debug configuration - OK") 
#elif RELEASE 
    #error "Release configuration - WRONG" 
#else 
    #error "Unknown configuration - DEFINITELY WRONG" 
#endif 

P.S. Ngoài ra còn có một cách để tạo cảnh báo. Tạo labe không được chấp nhận như

HereIsMyWarning: 

và không tham chiếu. Trong biên soạn, bạn sẽ nhận được cảnh báo như

1>..\Example.c(71) : warning C4102: 'HereIsMyWarning' : unreferenced label 
1

Đối với GCC và Clang (và có lẽ bất kỳ trình biên dịch hỗ trợ các tính năng _Pragma), bạn có thể định nghĩa một macro:

#if ! DEBUG 
#define FIX_FOR_RELEASE(statement) _Pragma ("GCC error \"Must be fixed for release version\"") 
#else 
#define FIX_FOR_RELEASE(statement) statement 
#endif 

Bạn có thể sử dụng macro này cho hacks tạm thời , ví dụ để có được mã xung quanh mà một đồng nghiệp chưa viết, để đảm bảo bạn không quên sửa lỗi khi bạn muốn phát hành bản dựng cho công chúng. Hoặc

FIX_FOR_RELEASE() 
// Code that must be removed or fixed before you can release 

hoặc

FIX_FOR_RELEASE(statement that must be removed or fixed before you can release); 
1

Trong Code :: Blocks, nếu bạn không muốn chế độ phát hành, bạn có thể xóa các chế độ Release. Để thực hiện việc này, nhấp vào trình đơn Dự án, chọn Thuộc tính ... và trong tab Mục tiêu xây dựng, bạn có thể nhấp vào Phát hành và sau đó nhấp vào nút Xóa. Việc xóa chế độ Release chỉ thực hiện cho dự án hiện tại, do đó bạn vẫn có thể sử dụng nó trong các dự án khác.

Ngược lại, nếu bạn thực sự muốn sử dụng tiền xử lý, bạn có thể làm điều này:

#ifdef RELEASE 
#error "You have to use the Debug mode" 
#endif 
Các vấn đề liên quan