Apakah ada cara untuk mengatur secara default untuk semua proyek menghapus peringatan aman precompiler yang muncul ketika menggunakan fungsi seperti scanf (). Saya menemukan bahwa Anda dapat melakukannya dengan menambahkan baris dalam opsi proyek atau #define _CRT_SECURE_NO_WARNINGS
di awal kode.
Saya menemukan diri saya berulang kali membuat proyek baru untuk menyelesaikan kontes pemrograman dan sangat menjengkelkan (dan membutuhkan waktu yang berharga) untuk menambahkan:
#ifdef _MSC_VER
#define _CRT_SECURE_NO_WARNINGS
#endif
Di awal kode, atau untuk mengaturnya di opsi precompiler setiap kali saya memulai proyek baru.
c++
visual-studio
precompiler
Juan Martinez
sumber
sumber
Jawaban:
Tandai semua proyek yang diinginkan dalam penjelajah solusi.
Tekan Alt-F7 atau klik kanan pada solution explorer dan pilih "Properties"
Konfigurasi: Semua Konfigurasi
Klik pada baris Definisi Prosesor untuk memohon editornya
Pilih Edit ...
Salin "_CRT_SECURE_NO_WARNINGS" ke dalam kotak putih Definisi Prosesor di bagian atas.
sumber
Mungkin karena saya masih baru untuk VS dan pasti baru untuk C, tetapi satu-satunya hal yang memungkinkan saya untuk membangun adalah menambahkan
Di bagian atas file saya, ini menekan kesalahan C4996 yang saya dapatkan dengan sprintf
Agak menyebalkan tapi sempurna untuk sedikit kode saya dan sejauh ini yang paling mudah.
Saya membacanya di sini: https://msdn.microsoft.com/en-us/library/2c8f766e.aspx
sumber
#pragma warning(push)
/#pragma warning(pop)
sebagai gantinya.Tidak secara otomatis, tidak. Anda dapat membuat templat proyek seperti yang disarankan BlueWandered atau membuat lembar properti khusus yang dapat Anda gunakan untuk proyek Anda saat ini dan semua proyek mendatang.
_CRT_SECURE_NO_WARNINGS
.Sekarang kapan pun Anda membuat proyek baru, tambahkan lembar properti ini seperti ...
Manfaatnya di sini adalah Anda tidak hanya mendapatkan satu tempat untuk mengelola pengaturan umum tetapi setiap kali Anda mengubah pengaturan mereka disebarkan ke SEMUA proyek yang menggunakannya. Ini berguna jika Anda memiliki banyak pengaturan suka
_CRT_SECURE_NO_WARNINGS
atau pustaka seperti Boost yang ingin Anda gunakan dalam proyek Anda.sumber
Semua solusi di sini gagal bekerja pada VS2013 saya, namun saya meletakkannya
#define _CRT_SECURE_NO_WARNINGS
di stdafx.h sebelum#pragma once
dan semua peringatan ditekan. Catatan: Saya hanya kode untuk keperluan prototipe untuk mendukung penelitian saya, jadi pastikan Anda memahami implikasi dari metode ini saat menulis kode Anda.Semoga ini membantu
sumber
stdafx.h
lokasinya?dua sen saya untuk VS 2017:
Saya bisa mengonfirmasi itu bekerja di stdafx.h keduanya dalam gaya ini:
Sebuah)
b)
(Saya telah menambahkan definisi lain untuk panggilan jaringan MSDN ..) Tentu saja saya lebih suka a).
Saya dapat mengonfirmasi bahwa: #define _CRT_SECURE_NO_WARNINGS (tanpa nilai) TIDAK BEKERJA.
PS titik sebenarnya adalah untuk menempatkan ini SEBELUM deklarasi fungsi, yaitu sebelum *. H
sumber
cukup salin " _CRT_SECURE_NO_WARNINGS " rekatkan pada proyek-> properties-> c / c ++ -> preprocessor-> definisi preprocessor klik ok.it akan berfungsi
sumber
Jika proyek Anda tidak menggunakan stdafx.h, Anda bisa meletakkan baris berikut sebagai baris pertama dalam file .cpp Anda dan peringatan kompiler harus pergi - setidaknya itu bagi saya di Visual Studio C ++ 2008.
Tidak masalah memiliki komentar dan baris kosong di depan mereka.
sumber
Meskipun Anda dapat menambahkan _CRT_SECURE_NO_WARNINGS ke Properti proyek Anda, cara termudah adalah menggunakan stdafx.h untuk segala jenis penonaktifan peringatan dan kesalahan, pastikan Anda menempatkan baris berikut (dan yang serupa) SEBELUM
Juga tidak perlu mendefinisikan nilai (yaitu "1") untuk _CRT_SECURE_NO_WARNINGS selama itu ditentukan. Jadi seharusnya terlihat seperti ini:
sumber
#pragma once
implementasi didefinisikan, tetapi mengikuti standar de-facto umum di Visual Studio. Jika itu membuat perbedaan bagi Anda, apakah Anda mendefinisikan simbol preprosesor di depan pragma atau setelahnya, maka Anda memiliki konfigurasi proyek yang rusak (ini dengan asumsi, bahwa Anda - terlalu - menyamakan "header yang dikompilasi sebelumnya" dan "stdafx.h " ).