7

Làm cách nào bạn có thể tạo cảnh báo trình biên dịch (trong mô hình #error, ngoại trừ cảnh báo) với mục đích trong Visual C++ sẽ hiển thị trên Danh sách lỗi với đúng số tệp và số dòng?Cảnh báo trình biên dịch có chủ ý cho Visual C++ xuất hiện trong Danh sách Lỗi?

GCC và các trình biên dịch khác cung cấp #warning, nhưng trình biên dịch MSVC thì không.

"Giải pháp" tại http://support.microsoft.com/kb/155196 không phân tích cú pháp trong danh sách lỗi Visual Studio.

+0

có vẻ như bạn đang bối rối về chính xác là Stack Overflow. – Juliano

+0

Đó là một S.O. loại câu hỏi. Tôi cũng muốn biết những gì người khác sẽ làm tốt hơn. – Thomas

+0

@Juliano: Chính xác thì bạn thấy khó chịu gì về câu hỏi này? Đó là chắc chắn nhất về chủ đề và thú vị. Nó có thể là một bản sao, nhưng tôi không thể tìm thấy một câu hỏi trùng lặp. –

Trả lời

10

Chỉ cần thêm này để phổ biến của bạn bao gồm tập tin (ví dụ, stdafx.h):

#define __STR2__(x) #x 
#define __STR1__(x) __STR2__(x) 
#define __LOC__ __FILE__ "("__STR1__(__LINE__)") : warning W0000: #pragma VSWARNING: " 
#define VSWARNING(x) message(__LOC__ x) 

Sử dụng này như:

#pragma VSWARNING("Is this correct?!?!") 

Trình biên dịch sẽ ra:

c:\dir\file.h(11) : warning W0000: #pragma VSWARNING: Is this correct?!?! 

Và tab Danh sách lỗi sẽ hiển thị cảnh báo độc đáo trong bảng:

Type  Num Description            File Line 
[Warning] 13 warning W0000: #pragma VSWARNING: Is this correct?!?! file.h 11 

chính xác như cảnh báo trình biên dịch Visual Studio bình thường.

+1

Tôi sử dụng một triển khai tương tự cho điều này (tôi đã đăng nó [để trả lời cho một câu hỏi khác] (http://stackoverflow.com/questions/2703528/what-code-have-you-written-with-pragma- bạn tìm thấy-hữu ích/2706693 # 2706693)). Tôi đã không nhận ra rằng Visual C++ vĩ mô sẽ thay thế các văn bản của một chỉ thị pragma; điều đó thật ngầu. –

+1

Trên ghi chú liên quan, bạn cũng có thể sử dụng "lỗi" thay vì "cảnh báo" trong văn bản đầu ra; điều này làm cho quá trình biên dịch thất bại (như '# error' hiện), nhưng cho phép biên dịch tiếp tục đến cuối đơn vị dịch (điều này cực kỳ hữu ích trong một số tình huống). –

1

Đây là loại một câu trả lời ngớ ngẩn cho câu hỏi của bạn, nhưng thường xuyên, nếu tôi cần thêm một cảnh báo cố ý, tôi sẽ gõ cái gì đó như:

#pragma asdfkljasdlfjasklfjklasjdfklj 

mà đưa ra một Unknown Pragma cảnh báo với số dòng và tất cả .

+0

Tuy nhiên, điều đó không in thông báo thực tế trong đầu ra trình biên dịch và Danh sách Lỗi. Chỉ có "pragma chưa biết" xuất hiện. – Thomas

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