Có C4172 Cảnh báo Visual C++ cho các trường hợp khi hàm trả về địa chỉ của một địa phương hoặc tạm thời hoặc tham chiếu đến biến cục bộ.Có bất kỳ trường hợp nào cảnh báo C4172 Visual C++ không nên được coi là lỗi không?
Something như thế này:
int& fun()
{
int var;
return var; //C4172
}
Bây giờ có vẻ như nó là một ý tưởng tốt để sử dụng #pragma warning
để làm cho Visual C++ đối xử với C4172 như lỗi và phá vỡ biên dịch.
Có bất kỳ tình huống sane nào mà C4172 không thực sự là lỗi không?
Vì vậy, bạn muốn biết nếu nó không quan trọng để đối xử với nó vĩnh viễn như một lỗi - có nghĩa là: tại sao nó được định nghĩa là một cảnh báo để bắt đầu với? Câu hỏi tuyệt vời. –
Rất có thể không, và trình biên dịch là đúng để cung cấp nó như là một chẩn đoán và không phải là lỗi biên dịch bởi vì nó là hành vi không xác định để trở về tham chiếu đến địa phương và không phải là lỗi cú pháp ngôn ngữ. Tại sao nó không được định nghĩa là lỗi cú pháp ngôn ngữ? Bởi vì nó không phải là một lỗi cú pháp. –
@jim mcnamara: Vâng, bạn nói đúng. – sharptooth