[Visual Studio] Disable cảnh báo hàm unsafe trong Visual Studio.

C Run-time Library (CRT) trong Visual Studio là 1 phần của thư viện chuẩn C++ kết hợp với thư viện chuẩn của C.

Các hàm trong CRT có thể cung cấp cho ta 1 dạng mới an toàn hơn (secure function). Các secure function sẽ có thêm _s ở sau tên. Nếu secure function tồn tại thì các hàm theo chuẩn C/C++ sẽ được đánh dấu là “deprecated” – nghĩa là chúng không được khuyến khích sử dụng và được loại bỏ trong CRT, khi đó nếu ta sử dụng chúng chương trình sẽ báo lỗi.

Ví dụ:


#include <stdio.h>

int main()

{

   int val;

   scanf("%d", &amp;val);

   printf("%d", val);

   return 0;

}

Khi build chương trình trên báo lỗi.

Đề giải quyết vấn đề này ta có thể sử dụng các cách sau.

1. Sử dụng secure function đã được cung cấp

Ví dụ:


#include &lt;stdio.h&gt;

int main()

{

   int val;

   scanf_s("%d", &amp;val);

   printf_s("%d", val);

   return 0;

}

2. Disable cảnh báo sử dụng macro “_CRT_SECURE_NO_WARNINGS”

Để thêm macro vào project C++ xem lại bước 4 bài Tạo DLL trong visual studio

Sau khi disable cảnh báo ta có thể sử dụng hàm theo chuẩn C/C++.


#include <stdio.h>

int main()

{

   int val;

   scanf("%d", &amp;val);

   printf("%d", val);

   return 0;

}

Kết quả:

10
10

Các secure function được Microsoft xây dựng, cung cấp thêm việc kiểm tra các điều kiện, xử lý lỗi khi xảy ra. Chúng giúp hàm thực hiện an toàn hơn. Tuy nhiên chúng chỉ có thể sử dụng trong Visual Studio, nếu ta chuyển sang trình biên dịch khác chương trình sẽ xảy ra lỗi. Vì vậy ta vẫn nên sử dụng các hàm theo chuẩn C/C++ để có thể chạy được trên nhiều trình biên dịch khác nhau.

Leave A Comment?