2012-05-07 36 views
5

Tôi đang biên soạn với cl.exe phiên bản _MSC_FULL_VER == 160030319 với mức cảnh báo tại 4. Tôi nhận được cảnh báo này:yvals.h cảnh báo C4514 trên Windows SDK 7.1 biên dịch

C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\INCLUDE\yvals.h(773) : warning C4514: 'std::_Mutex::_Mutex' : unreferenced inline function has been removed 

Đó là bit này của mã nguồn:

__thiscall _Mutex(_Uninitialized) 
{ // do nothing 
} 

yvals.h được bao gồm trong stdint.h mà tôi đang kể cả như vậy:

#pragma warning(disable:4514) 

#include <stdint.h> 

#pragma warning(default:4514) 

Nhưng nó vẫn không loại bỏ được cảnh báo. Tôi có làm gì sai ở đây không?

+0

Hmm ... có vẻ như 'yvals.h' đang được đưa vào một nơi khác khác' stdint.h'. Nếu tôi loại bỏ 'mặc định: 4514' cảnh báo biến mất –

+0

Tôi bọc tất cả các gói của tôi nhưng nó vẫn tồn tại –

+0

Tôi không nhận được điều này - Tôi chỉ nhìn vào đầu ra tiền xử lý C ('/P') và mọi thứ dường như theo thứ tự - dòng vi phạm 'yvals.h' được bọc chính xác. –

Trả lời

4

Tôi đã tìm thấy câu trả lời here. Ai đó đã báo cáo nó là một lỗi, nhưng nó đã bị đóng như thiết kế. Câu trả lời là cảnh báo không khởi động cho đến khi kết thúc đơn vị dịch thuật. Trích dẫn:

Cảm ơn bạn đã báo cáo sự cố này. Tôi đã giải quyết nó theo Thiết kế bởi vì cảnh báo 4514 và 4710 được phát ra ở cuối bản dịch đơn vị (đơn vị dịch là một tệp nguồn và tất cả các tiêu đề của nó bao gồm các tiêu đề ). Đó là lý do tại sao việc vô hiệu hóa chúng cho một phần của đơn vị dịch không có hiệu lực. Mặc dù các số dòng có thể làm cho nó xuất hiện như thể trình biên dịch đang phát ra những cảnh báo này ở giữa đơn vị dịch vì nó biên dịch mã, nhưng không phải như vậy.

Cảnh báo 4514 "chức năng inline unreferenced đã được gỡ bỏ" là phát ra ở phần cuối của các đơn vị dịch bởi trình biên dịch front-end (chịu trách nhiệm phân tích cú pháp C++) bởi vì chỉ khi đó nó có thể xác định rằng không có gì trong các đơn vị dịch tham chiếu hàm inline. Nó tra cứu số dòng của hàm, nhưng cảnh báo là phát ra hay không phụ thuộc vào việc nó được bật ở cuối đơn vị dịch , không cho dù nó được bật trong khi biên dịch hàm .

Vì vậy, bạn cần giữ nó luôn bị tắt hoặc không lo lắng về điều đó.

+0

thật bực mình. Tôi sẽ chỉ vô hiệu hóa nó trên toàn bộ xây dựng - chúng tôi _have_ để được cảnh báo miễn phí cho hội nhập liên tục :(Cảm ơn câu trả lời :) !! –

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