Halaman Properti C/C++

Halaman properti berikut ditemukan di bawah Proyek>Properti>Properti Konfigurasi>C/C++:

Properti Umum C/C++

Sertakan Direktori Tambahan

Menentukan satu atau beberapa direktori untuk ditambahkan ke jalur yang termasuk. Pisahkan direktori dengan titik koma (';') jika ada lebih dari satu. /I Mengatur opsi pengkompilasi (Tambahan termasuk direktori).

Direktori #using Tambahan

Menentukan satu atau beberapa direktori untuk dijelajahi guna memecahkan nama yang #using diteruskan ke direktif. Pisahkan direktori dengan titik koma (';') jika ada lebih dari satu. /AI Mengatur opsi pengkompilasi.

Tambahan Direktori BMI

Menentukan satu atau beberapa direktori untuk dicari dalam proses menyelesaikan nama yang ditentukan pada arahan import. Pisahkan direktori dengan titik koma (';') jika ada lebih dari satu. /ifcSearchDir[path] Mengatur opsi pengkompilasi.

Dependensi Modul Tambahan

Menentukan satu atau beberapa modul yang akan digunakan untuk menyelesaikan nama yang diteruskan ke arahan import. Pisahkan direktori dengan titik koma (';') jika ada lebih dari satu. /reference Mengatur opsi pengkompilasi.

Dependensi Unit Header Tambahan

Menentukan satu atau beberapa unit header yang akan digunakan untuk menyelesaikan nama yang diteruskan ke direktif header import. Pisahkan direktori dengan titik koma (';') jika ada lebih dari satu. /headerUnit Mengatur opsi pengkompilasi.

Memindai Sumber untuk Dependensi Modul

Saat diatur ke Ya, pengkompilasi memindai semua sumber C++, bukan hanya antarmuka modul dan sumber unit header, untuk dependensi unit modul dan header. Sistem build membangun grafik dependensi lengkap, yang memastikan bahwa semua modul dan unit header yang diimpor dibangun sebelum mengkompilasi file yang bergantung padanya. Saat dikombinasikan dengan Terjemahkan Termasuk ke Impor, file apa pun yang ditentukan dalam header-units.json di direktori yang sama dengan file header tersebut dikompilasi ke dalam unit header.

File yang memiliki ekstensi .ixx, dan file yang memiliki properti File>C/C++ diatur pada properti > menjadi Compile as C++ Header Unit (/exportHeader), selalu dipindai.

Terjemahkan Termasuk ke Impor

Saat diatur ke Ya, kompiler memperlakukan #include direktif sebagai import direktif jika kondisi tertentu terpenuhi: file header ditentukan dalam file header-units.json di direktori yang sama, dan unit header yang telah dikompilasi (file .ifc) tersedia untuk file header. Jika tidak, file header diperlakukan sebagai normal #include. File header-units.json digunakan untuk membangun unit header untuk masing-masing #include tanpa duplikasi simbol. Ketika dikombinasikan dengan Pemindaian Sumber untuk Ketergantungan Modul, pengompilasi secara otomatis menemukan semua file header yang dapat dikompilasi sebagai unit header. Properti ini mengatur /translateInclude opsi pengkompilasi.

Format Informasi Debug

Menentukan jenis informasi debugging yang dihasilkan oleh pengompilasi. Properti ini memerlukan pengaturan linker yang kompatibel. /Z7Mengatur opsi pengkompilasi , /Zi, /ZI (Format informasi debug).

Pilihan

  • None (None) - Tidak menghasilkan informasi penelusuran kesalahan, sehingga kompilasi mungkin lebih cepat.
  • Kompatibel C7 (OldStyle) - Menghasilkan file objek yang berisi informasi penelusuran kesalahan simbolis penuh. Tidak ada file PDB yang diproduksi.
  • Database Program (ProgramDatabase) - Menghasilkan database program (PDB) yang berisi informasi jenis dan informasi penelusuran kesalahan simbolis untuk digunakan dengan debugger. Informasi penelusuran kesalahan simbolis mencakup nama dan jenis variabel dan fungsi, dan nomor baris.
  • Database Program untuk Edit Dan Lanjutkan (EditAndContinue) - Menghasilkan database program, seperti yang dijelaskan sebelumnya, dalam format yang mendukung fitur Edit dan Lanjutkan .

Dukung Fitur Debugging Kode Saya Saja

Menambahkan kode pendukung untuk mengaktifkan debug Just My Code di unit kompilasi ini. Mengatur /JMC.

Mendukung Penelusuran Kesalahan Dinamis C++

(Pratinjau) Mengatur flag /dynamicdeopt kompiler untuk mengaktifkan C++ Dynamic Debugging. Tempatkan titik henti yang telah dideoptimalisasi dan masuk ke sembarang titik dengan deoptimisasi fungsi berdasarkan permintaan. Gunakan mode ini untuk men-debug kode yang dioptimalkan.

Dukungan RunTime Bahasa Umum

Gunakan layanan runtime .NET. Sakelar ini tidak kompatibel dengan beberapa sakelar lain; lihat dokumentasi tentang /clr keluarga sakelar untuk detailnya.

Pilihan

  • Tidak Ada Dukungan Common Language RunTime - Tidak Ada Dukungan Common Language RunTime
  • Dukungan Common Language RunTime - Membuat metadata untuk aplikasi Anda yang dapat digunakan oleh aplikasi CLR lainnya. Juga memungkinkan aplikasi Anda untuk menggunakan jenis dan data dalam metadata komponen CLR lainnya.
  • Dukungan MSIL Murni Common Language Runtime - Menghasilkan file output khusus MSIL tanpa kode asli yang dapat dieksekusi, meskipun dapat berisi tipe asli yang dikompilasi ke MSIL.
  • Dukungan MSIL Common Language RunTime Aman - Menghasilkan file keluaran MSIL-only (tanpa kode executable asli) yang dapat diverifikasi.

Menggunakan Ekstensi Runtime Windows

Gunakan ekstensi bahasa Windows Run Time. Mengatur /ZW.

Sembunyikan Banner Startup

Menyembunyikan tampilan banner masuk saat pengompilasi dimulai dan menonaktifkan tampilan pesan informasi selama proses kompilasi.

Tingkat Peringatan

Pilih seberapa ketat Anda ingin kompiler tentang kesalahan kode. Mengatur /W0 - /W4.

Pilihan

  • Nonaktifkan Semua Peringatan - Tingkat 0 menonaktifkan semua peringatan.
  • Level1 - Tingkat 1 menampilkan peringatan parah. Tingkat 1 adalah tingkat peringatan default di baris perintah.
  • Level2 - Tingkat 2 menampilkan semua peringatan tingkat 1 dan peringatan yang kurang parah dari tingkat 1.
  • Level3 - Level 3 menampilkan semua peringatan tingkat 2 dan semua peringatan lain yang direkomendasikan untuk tujuan produksi.
  • Level4 - Level 4 menampilkan semua peringatan tingkat 3 ditambah peringatan informasi, yang dalam banyak kasus dapat diabaikan dengan aman.
  • EnableAllWarnings - Mengaktifkan semua peringatan, termasuk yang dinonaktifkan secara default.

Perlakukan Peringatan Sebagai Kesalahan

Memperlakukan peringatan kompilator sebagai kesalahan. Untuk proyek baru, mungkin yang terbaik adalah menggunakan /WX dalam setiap kompilasi. Atasi semua peringatan untuk meminimalkan cacat kode yang sulit ditemukan.

Versi Peringatan

Sembunyikan peringatan yang diperkenalkan setelah versi pengompilasi tertentu. Mengatur /Wv:xx[.yy[.zzzzz]].

Format Diagnostik

Memungkinkan diagnostik yang kaya, dengan informasi kolom dan konteks sumber dalam pesan diagnostik.

Pilihan

  • Caret - Menyediakan informasi kolom dalam pesan diagnostik. Dan, menghasilkan baris kode sumber yang relevan dengan tanda sisipan yang menunjukkan kolom yang menyinggung.
  • Informasi Kolom - Selain itu menyediakan nomor kolom dalam baris di mana diagnostik dikeluarkan, jika berlaku.
  • Klasik - Hanya menampilkan pesan diagnostik terdahulu yang ringkas dengan nomor baris.

Pemeriksaan SDL

Pemeriksaan tambahan yang direkomendasikan dari Siklus Hidup Pengembangan Keamanan (SDL); termasuk gunakan fitur pembuatan kode aman tambahan dan memungkinkan peringatan tambahan yang relevan dengan keamanan dianggap sebagai kesalahan. Set /sdl, /sdl-.

Kompilasi Multi-prosesor

Aktifkan kompilasi multi-prosesor. /MP Mengatur opsi pengkompilasi.

Aktifkan Address Sanitizer

Mengkompilasi dan menautkan program dengan instrumentasi AddressSanitizer. Properti ini saat ini mendukung build target x86 dan x64. /fsanitize Mengatur opsi pengkompilasi.

Aktifkan Dukungan Fuzzer (Eksperimental)

Mengkompilasi program dengan Fuzzer. Aktifkan AddressSanitizer untuk hasil terbaik. Saat ini tersedia untuk build x86 dan x64. Mengatur /fsanitize=fuzzer.

Properti Pengoptimalan C/C++

Pengoptimalan

Pilih opsi untuk pengoptimalan kode; pilih Kustom untuk menggunakan opsi pengoptimalan tertentu. Set /Od, /O1, /O2.

Pilihan

  • Kustom - Pengoptimalan kustom.
  • Dinonaktifkan - Nonaktifkan pengoptimalan.
  • Pengoptimalan Maksimum (Mengutamakan Ukuran) - Setara dengan /Os /Oy /Ob2 /Gs /GF /Gy
  • Pengoptimalan Maksimum (Mengutamakan Kecepatan) - Setara dengan /Oi /Ot /Oy /Ob2 /Gs /GF /Gy
  • Pengoptimalan (Memprioritaskan Kecepatan) - Setara dengan /Oi /Ot /Oy /Ob2

Ekspansi Fungsi Inline

Pilih tingkat ekspansi fungsi sebaris untuk kompilasi. Mengatur /Ob.

Pilihan

  • Default
  • Dinonaktifkan - Menonaktifkan ekspansi sebaris, yang aktif secara default.
  • Hanya __inline - Hanya memperluas fungsi yang ditandai sebagai inline, , __forceinlineatau __inline. Atau, dalam fungsi anggota C++, yang ditentukan dalam deklarasi kelas.
  • Apa Pun yang Cocok - Memperluas fungsi yang ditandai sebagai inline atau __inline dan fungsi lain yang dipilih pengkompilasi. (Ekspansi terjadi atas kebijaksanaan kompilator, sering disebut sebagai autoinlining.)

Aktifkan Fungsi Intrinsik

Mengaktifkan fungsi intrinsik. Menggunakan fungsi intrinsik menghasilkan kode yang lebih cepat, tetapi mungkin lebih besar. Mengatur /Oi.

Ukuran atau Kecepatan Yang Disukai

Apakah akan mendukung ukuran kode atau kecepatan kode; 'Pengoptimalan Global' harus diaktifkan. Set /Ot, /Os.

Pilihan

  • Mendukung kode kecil - Meminimalkan ukuran EXEs dan DLL dengan menginstruksikan pengkompilasi untuk mendukung ukuran di atas kecepatan.
  • Mengutamakan kode cepat - Memaksimalkan kecepatan EXEs dan DLL dengan menginstruksikan pengkompilasi untuk lebih mengutamakan kecepatan daripada ukuran. (Nilai ini adalah default.)
  • Tidak ada - Tidak ada pengoptimalan ukuran dan kecepatan.

Hilangkan Penunjuk Bingkai

Menonaktifkan pembuatan frame pointer pada stack panggilan.

Aktifkan Pengoptimalan Fiber-Safe

Mengaktifkan pengoptimalan ruang memori saat menggunakan fiber dan akses penyimpanan lokal thread. Mengatur /GT.

Pengoptimalan Seluruh Program

Memungkinkan pengoptimalan lintas modul dengan menunda pembuatan kode hingga waktu penautan. Memerlukan opsi Pembuatan Kode Waktu Saat Penautan. Mengatur /GL.

Properti Praproscesor C/C++

Definisi Praprosesor

Menentukan simbol prapemrosesan untuk file sumber Anda.

Tidak menentukan Definisi Praprosesor

Menyebutkan satu atau beberapa praprosesor yang tidak ditentukan. Mengatur /U.

Hapus Semua Definisi Praprosesor

Tidak menentukan semua nilai pra-prosesor yang ditentukan sebelumnya. Mengatur /u.

Abaikan Jalur Sertakan Standar

Mencegah penyusun mencari file include dalam direktori yang ditentukan dalam variabel lingkungan INCLUDE.

Pra-pemrosesan ke File

Praproses file sumber C dan C++, dan menulis output yang telah diproses sebelumnya ke file. Opsi ini menekan kompilasi, dan tidak menghasilkan .obj file.

Praproses Menghilangkan Nomor Baris

Prapemroscesan tanpa arahan #line.

Pertahankan Komentar

Menghilangkan bagian komentar dari kode sumber; memerlukan pengaturan setidaknya satu dari opsi Pra-pemrosesan. Mengatur /C.

Gunakan Preprosesor Mematuhi Standar

Gunakan prapemroses yang sesuai dengan standar (/Zc:preprocessor). Saat ini diindikasikan oleh /std:c11 dan versi yang lebih baru. Untuk menggunakan prosesor warisan, atur properti ini ke 'Tidak'.

Properti Pembuatan Kode C/C++

Aktifkan Pengelompokan String

Pengkompilasi hanya membuat satu salinan string identik baca-saja dalam gambar program. Ini menghasilkan program yang lebih kecil, pengoptimalan yang disebut penghematan string. /O1, /O2, dan /ZI secara otomatis mengatur /GF opsi.

Aktifkan Kompilasi Ulang Minimal

Mengaktifkan pembangunan ulang minimal, yang menentukan apakah akan mengkompilasi ulang file sumber C++ yang menyertakan definisi kelas C++ yang diubah, disimpan dalam file header .h .

Aktifkan Pengecualian C++

Menentukan model penanganan pengecualian yang akan digunakan oleh pengkompilasi.

Pilihan

  • Ya dengan Pengecualian SEH - Model penanganan pengecualian yang menangkap pengecualian terstruktur (asinkron) dan pengecualian C++ (sinkron). Mengatur /EHa.
  • Ya - Model penanganan pengecualian yang hanya menangkap pengecualian C++ dan memberi tahu pengkompilasi untuk mengasumsikan bahwa fungsi C ekstern tidak pernah melempar pengecualian C++. Mengatur /EHsc.
  • Ya dengan fungsi Extern C - Model penanganan pengecualian yang hanya menangkap pengecualian C++ dan memberi tahu pengkompilasi untuk mengasumsikan bahwa fungsi C ekstern memberikan pengecualian. Mengatur /EHs.
  • Tidak - Tidak ada penanganan pengecualian.

Pengecekan Tipe Skala Kecil

Aktifkan pemeriksaan konversi ke jenis yang lebih kecil, tidak kompatibel dengan jenis pengoptimalan apa pun selain debug. Mengatur /RTCc.

Pemeriksaan Dasar Runtime

Aktifkan pemeriksaan kesalahan runtime dasar, tidak kompatibel dengan jenis pengoptimalan apa pun selain debug. Set /RTCs, /RTCu, /RTC1.

Pilihan

  • Stack Frames - Mengaktifkan pemeriksaan kesalahan run-time bingkai tumpukan.
  • Variabel yang tidak diinisialisasi - Melaporkan kapan variabel digunakan tanpa telah diinisialisasi.
  • Keduanya (/RTC1, setara dengan /RTCsu) - Setara dengan /RTCsu.
  • Default - Pemeriksaan runtime default.

Pustaka Runtime

Tentukan pustaka runtime untuk penautan. Set /MT, /MTd, /MD, /MDd.

Pilihan

  • Multi-utas - Menyebabkan aplikasi Anda menggunakan versi statis multiutas dari pustaka waktu proses.
  • Debug Multi-thread - Mendefinisikan _DEBUG dan _MT. Opsi ini juga menyebabkan pengkompilasi menempatkan nama LIBCMTD.lib pustaka ke dalam .obj file sehingga linker akan menggunakan LIBCMTD.lib untuk mengatasi simbol eksternal.
  • DLL multiutas - Menyebabkan aplikasi Anda menggunakan versi khusus dari library runtime yang mendukung multiutas dan DLL. _MT dan _DLL dan menyebabkan kompilator memasukkan nama pustaka MSVCRT.lib ke dalam file .obj.
  • Multi-threaded Debug DLL - Mendefinisikan _DEBUG, _MT, dan _DLL yang menyebabkan aplikasi Anda menggunakan versi debug multithread dan khusus untuk DLL dari pustaka run-time. Ini juga menyebabkan kompilator menempatkan nama pustaka MSVCRTD.lib ke dalam file .obj.

Perataan Anggota Struct

Menentukan batas 1, 2, 4, atau 8 byte untuk perataan anggota struct. Mengatur /Zp.

Pilihan

  • 1 Byte - Mengemas struktur pada batas satu byte. Sama seperti /Zp.
  • 2 Byte - Mengemas struktur pada batas dua byte.
  • 4 Byte - Mengemas struktur pada batas empat byte.
  • 8 Byte - Mengemas struktur pada batas delapan byte (default).
  • 16 Byte - Mengemas struktur pada batas enam belas byte.
  • Default - Pengaturan perataan baku.

Pemeriksaan Keamanan

Pengujian Keamanan membantu mendeteksi kelebihan batas tumpukan-buffer, serangan umum terhadap keamanan program.

Pilihan

  • Nonaktifkan Pemeriksaan Keamanan - Nonaktifkan Pemeriksaan Keamanan. Mengatur /GS-.
  • Aktifkan Pemeriksaan Keamanan - Aktifkan Pemeriksaan Keamanan. Mengatur /GS.

Control Flow Guard (Penjaga Alur Kontrol)

Pemeriksaan keamanan penjaga membantu mendeteksi upaya pengiriman ke blok kode ilegal.

Pilihan

  • Ya - Aktifkan Pemeriksaan Keamanan dengan Pengaturan Penjaga /guard:cf.
  • Tidak

Aktifkan Penautan Tingkat Fungsi

Memungkinkan pengkompilasi untuk mengemas fungsi individual dalam bentuk fungsi kemasan (COMDAT). Diperlukan agar proses pengeditan dan pekerjaan dapat terus berlanjut. Mengatur /Gy.

Aktifkan Pembuatan Kode Paralel

Memungkinkan pengkompilasi menghasilkan kode paralel untuk perulangan yang diidentifikasi menggunakan #pragma loop(hint_parallel[(n)]) saat pengoptimalan diaktifkan.

Aktifkan Set Instruksi Tingkat Lanjut

Aktifkan penggunaan instruksi yang ditemukan pada prosesor yang mendukung set instruksi yang ditingkatkan. Misalnya, penyempurnaan SSE, SSE2, AVX, dan AVX2 ke IA-32. Dan, penyempurnaan AVX dan AVX2 ke x64. Saat ini /arch:SSE dan /arch:SSE2 hanya tersedia saat membangun untuk arsitektur x86. Jika tidak ada opsi yang ditentukan, pengkompilasi menggunakan instruksi yang ditemukan pada prosesor yang mendukung SSE2. Penggunaan instruksi yang ditingkatkan dapat dinonaktifkan dengan /arch:IA32. Untuk informasi selengkapnya, lihat /arch (x86), /arch (x64), /arch (ARM64), dan /arch (ARM).

Pilihan

  • Ekstensi SIMD Streaming - Streaming SIMD Extensions. Pengaturan /arch:SSE
  • Ekstensi SIMD Streaming 2 - Ekstensi SIMD Streaming 2. Pengaturan /arch:SSE2
  • Advanced Vector Extensions (AVX) - Ekstensi Vektor Tingkat Lanjut. Pengaturan /arch:AVX
  • Ekstensi Vektor Tingkat Lanjut 2 - Ekstensi Vektor Tingkat Lanjut 2. Pengaturan /arch:AVX2
  • Tidak Ada Instruksi yang Disempurnakan - Tidak Ada Instruksi yang Disempurnakan. Pengaturan /arch:IA32
  • Tidak Diatur - Tidak Diatur.

Aktifkan Panjang Vektor

Memungkinkan pemilihan panjang vektor untuk /arch:AVX512 dan /arch:AVX10.x flags. Nilai yang diizinkan adalah 256 dan 512 bit (X86/X64).

Model Titik Mengambang

Atur model titik mengambang. Set /fp:precise, /fp:strict, /fp:fast.

Pilihan

  • Tepat - Standar. Meningkatkan konsistensi pengujian floating-point untuk kesetaraan dan ketidaksetaraan.
  • Ketat - Model floating-point paling ketat. /fp:strict menyebabkan fp_contract menjadi NONAKTIF dan fenv_access menjadi AKTIF. /fp:except tersirat dan dapat dinonaktifkan dengan secara eksplisit menentukan /fp:except-. Ketika digunakan dengan /fp:except-, /fp:strict memberlakukan semantik floating-point yang ketat tetapi tanpa memperhitungkan kejadian pengecualian.
  • Cepat - Membuat kode tercepat dalam banyak kasus.

Aktifkan Pengecualian Titik Mengambang

Model pengecualian titik mengambang yang andal. Pengecualian akan dimunculkan segera setelah dipicu. Mengatur /fp:except.

Buat Gambar Hotpatchable

Ketika hotpatching aktif, kompilator memastikan bahwa instruksi pertama dari setiap fungsi adalah dua byte, sesuai dengan keperluan hot patching. Mengatur /hotpatch.

Mitigasi Spectre

Mitigasi spektre untuk CVE 2017-5753. Mengatur /Qspectre.

Pilihan

  • Diaktifkan - Mengaktifkan fitur mitigasi Spectre untuk CVE 2017-5753
  • Dinonaktifkan - Tidak Diatur.

Mengaktifkan Mitigasi Intel JCC Erratum

Mitigasi perangkat lunak untuk dampak performa yang disebabkan oleh pembaruan mikrokode erratum Intel JCC. Mengatur /QIntel-jcc-erratum.

Aktifkan Metadata Kelanjutan EH

Menghasilkan daftar yang diurutkan dari semua target kelanjutan penanganan pengecualian yang valid untuk file biner, digunakan selama waktu runtime untuk melakukan validasi RIP. Saat ini tersedia untuk build x64. Mengatur /guard:ehcont.

Aktifkan Pengembalian yang Ditandatangani

Memungkinkan pengembalian yang ditandatangani yang membantu mendeteksi dan mencegah upaya pengiriman ke blok ilegal dari pengembalian fungsi. Saat ini tersedia untuk build ARM64. Mengatur /guard:signret.

Properti Bahasa C/C++

Nonaktifkan Ekstensi Bahasa

Mengaktifkan atau menonaktifkan ekstensi bahasa. Mengatur /Za.

Perlakukan WChar_t Sebagai Tipe Bawaan

Ketika ditentukan, tipe wchar_t menjadi tipe asli yang secara langsung dipetakan ke __wchar_t dengan cara yang sama seperti short dipetakan ke __int16. /Zc:wchar_t aktif secara default.

Memaksa Kesesuaian dalam Lingkup Perulangan

Menerapkan perilaku C++ standar untuk perulangan for pernyataan dengan ekstensi Microsoft. Set, /Za/Ze(Nonaktifkan ekstensi bahasa). /Zc:forScope aktif secara default.

Menghapus kode dan data yang tidak direferensikan

Ketika ditentukan, pengkompilasi tidak lagi menghasilkan informasi simbol untuk kode dan data yang tidak direferensikan.

Menerapkan aturan konversi jenis

Digunakan untuk mengidentifikasi jenis referensi rvalue sebagai hasil dari operasi cast sesuai dengan standar C++11.

Aktifkan Informasi Jenis Run-Time

Menambahkan kode untuk memeriksa jenis objek C++ pada waktu proses (informasi tipe waktu proses, atau RTTI). Set /GR, /GR-.

Buka Dukungan MP

Mengaktifkan ekstensi bahasa OpenMP 2.0. Mengatur /openmp.

Standar Bahasa C++

Menentukan standar bahasa C++ yang diaktifkan oleh kompilator. Nilai default tidak mengatur opsi standar, sehingga pengkompilasi menggunakan pengaturan C++14 defaultnya. Jika Anda memilih nilai tertentu, opsi pengompilasi yang sesuai dengan /std akan diatur.

Pilihan

  • Default (ISO C++14 Standard)
  • ISO C++14 Standard (/std:c++14)
  • ISO C++17 Standard (/std:c++17)
  • ISO C++20 Standard (/std:c++20)
  • Pratinjau - ISO C++23 Standard (/std:c++23preview)
  • Pratinjau - Fitur dari Draf Kerja C++ Terbaru (/std:c++latest)

Standar Bahasa C

Menentukan standar bahasa C yang diterapkan oleh kompilator. Nilai default tidak mengatur opsi standar, sehingga pengkompilasi menggunakan pengaturan MSVC warisan defaultnya. Jika Anda memilih nilai tertentu, opsi pengompilasi yang sesuai dengan /std akan diatur.

Pilihan

  • Default (MSVC Warisan)
  • ISO C11 Standard (/std:c11)
  • ISO C17 (2018) Standard (/std:c17)
  • Pratinjau - Fitur dari Rancangan Kerja C Terbaru (/std:clatest)

Mode kesuaian

Mengaktifkan atau menekan mode kesesuaian. Mengatur /permissive-.

Aktifkan Modul Pustaka Standar C++ Eksperimental

Dukungan eksperimental untuk Modul TS C++ dan modul Pustaka Standar.

Membangun Modul Pustaka Standar ISO C++23

Mulai dari Visual Studio 17.6, ketika properti ini diaktifkan dan Standar Bahasa C++ diatur ke /std:c++latest, proyek Microsoft C++ secara otomatis menemukan dan membangun modul Pustaka Standar ISO C++23. Ini memungkinkan Anda untuk import std atau import std.compat dalam kode C++ Anda.

Properti Header C/C++ yang Telah Dikompreilasi

Membuat/Menggunakan Header yang Telah Dikompresi

Memungkinkan pembuatan atau penggunaan header yang telah dikompilasikan sebelumnya selama build. Mengatur /Yc, /Yu.

Pilihan

  • Buat - Menginstruksikan pengkompilasi untuk membuat file header (.pch) yang telah dikompilasi sebelumnya yang mewakili status kompilasi pada titik tertentu.
  • Gunakan - Menginstruksikan pengkompilasi untuk menggunakan file header (.pch) yang sudah dikompilasi sebelumnya dalam kompilasi saat ini.
  • Tidak Menggunakan Header yang Telah Dikompilasi - Tidak menggunakan header yang telah dikompilasi.

File Header yang Dikompilasi Sebelumnya

Menentukan nama file header yang akan digunakan saat membuat atau menggunakan file header yang telah dikommpilasikan sebelumnya. Mengatur /Yc, /Yu.

File Output Header yang Sudah Dikompilasi

Menentukan jalur atau nama file header yang dihasilkan sebelumnya. Mengatur /Fp.

Sifat-Sifat Output File C/C++

Perluas Sumber Berkait

Buat file daftar dengan atribut yang diperluas yang disuntikkan ke dalam file sumber. Mengatur /Fx.

Output Perakitan

Menentukan isi file hasil bahasa rakitan. Sets /FA, /FAc, /FAs, /FAcs.

Pilihan

  • Tidak Ada Daftar - Tidak ada daftar.
  • Daftar Khusus Assembly - Daftar kode assembly; .asm
  • Kode Mesin dan Perakitan - Kode mesin dan perakitan; .cod
  • Assembly With Source Code - Kode sumber dan assembly; .asm
  • Assembly, Machine Code and Source - Assembly, kode mesin dan kode sumber; .cod

Menggunakan unicode untuk daftar perakitan

Menyebabkan file output dibuat dalam format UTF-8.

Daftar Lokasi ASM

Menentukan jalur atau nama relatif untuk file daftar ASM; dapat berupa nama file atau direktori. Mengatur /Fa.

Nama File Output Modul

Lokasi file modul atau keluaran unit header (BMI); dapat berupa nama file atau direktori. Mengatur /ifcOutput[name].

Nama File Dependensi Modul

Menentukan jalur dan/atau nama file dependensi modul yang dihasilkan. Mengatur /scanDependencies[path].

Nama File Objek

Menentukan nama untuk mengganti nama file objek default; dapat berupa nama file atau direktori. Mengatur /Fo.

Nama File Database Program

Menentukan nama untuk file PDB yang dihasilkan kompilator; juga menentukan nama dasar untuk file IDB yang dihasilkan kompilator yang diperlukan; dapat berupa nama file atau direktori. Mengatur /Fd.

Buat File Dokumentasi XML

Menentukan bahwa pengkompilasi harus menghasilkan file komentar dokumentasi XML (. XDC). Mengatur /doc.

Nama File Dokumentasi XML

Menentukan nama file dokumentasi XML yang dihasilkan; dapat berupa nama file atau direktori. /doc: <Mengatur nama.>

Hasilkan File Dependensi Sumber

Menghasilkan file json dengan daftar semua file yang digunakan pengkompilasi untuk kompilasi sumber. Mengatur /sourceDependencies.

Nama File Dependensi Sumber

Menentukan jalur dan/atau nama file dependensi sumber yang dihasilkan. Mengatur /sourceDependencies[path].

C/C++ Properti Informasi Telusuran

Aktifkan Telusuri Informasi

Menentukan tingkat informasi telusur dalam .bsc file. Mengatur /FR.

Telusuri Berkas Informasi

Menentukan nama opsional untuk file informasi browser. /FR <Mengatur nama.>

C/C++ Eksternal Menyertakan Properti

Perlakukan File yang Disertakan dengan Kurung Sudut sebagai Eksternal

Menentukan apakah akan memperlakukan file yang disertakan dengan tanda kurung sudut sebagai eksternal. Atur properti ini ke Ya untuk mengatur /external:anglebrackets opsi pengkompilasi.

Tingkat Peringatan Header Eksternal

Pilih tingkat keketatan yang Anda inginkan dari kompilator terhadap kesalahan kode di header eksternal. Properti ini mengatur /external:Wn opsi pengkompilasi. Jika nilai ini diatur ke Mewarisi Tingkat Peringatan Proyek atau bawaan, opsi lain /external akan diabaikan.

Diagnostik Templat di Header Eksternal

Menentukan apakah akan mengevaluasi tingkat peringatan di seluruh rantai instansiasi templat. Atur properti ini ke Ya untuk mengatur /external:templates- opsi pengkompilasi.

Menonaktifkan Analisis Kode untuk Header Eksternal

Menonaktifkan analisis kode untuk header eksternal. /analyze:external- Mengatur opsi pengkompilasi.

Aturan Analisis untuk Header Eksternal

Menentukan penggantian aturan analisis kode untuk header eksternal. Jika tidak ditentukan, pengaturan Analisis Kode digunakan. /analyze:external:ruleset path Mengatur opsi pengkompilasi.

Properti Lanjutan C/C++

Konvensi Panggilan

Pilih konvensi pemanggilan default untuk aplikasi Anda (dapat diubah oleh fungsi). Sets /Gd, /Gr, /Gz, /Gv.

Pilihan

  • __cdecl - Menentukan __cdecl konvensi panggilan untuk semua fungsi kecuali fungsi dan fungsi anggota C++ yang ditandai __stdcall atau __fastcall.
  • __fastcall - Menentukan __fastcall konvensi panggilan untuk semua fungsi kecuali fungsi dan fungsi anggota C++ yang ditandai __cdecl atau __stdcall. Semua __fastcall fungsi harus memiliki prototipe.
  • __stdcall - Menentukan __stdcall konvensi panggilan untuk semua fungsi kecuali fungsi dan fungsi anggota C++ yang ditandai __cdecl atau __fastcall. Semua __stdcall fungsi harus memiliki prototipe.
  • __vectorcall - Menentukan __vectorcall konvensi panggilan untuk semua fungsi kecuali fungsi dan fungsi anggota C++ yang ditandai __cdecl, , __fastcallatau __stdcall. Semua __vectorcall fungsi harus memiliki prototipe.

Dikompilasi Sebagai

Pilih opsi kompilasi bahasa untuk file sumber. Mengatur opsi /TC, /TP, /interface, /internalPartition, atau /exportHeader.

Pilihan

  • Default - Default.
  • Kompilasi sebagai Kode C (/TC) - Kompilasi file sumber tertentu sebagai kode C. Secara default, file dengan .c ekstensi dikompilasi sebagai C.
  • Kompilasi sebagai Kode C++ (/TP) - Kompilasi file sumber tertentu sebagai kode C++. Secara default, semua file sumber yang tidak memiliki .c, , .ixx, .cppm.h, atau tidak ada ekstensi yang dikompilasi sebagai C++.
  • Kompilasi sebagai Kode Modul C++ (/interface) - Kompilasi file sumber tertentu sebagai kode modul C++. Secara default, file dengan .ixx ekstensi atau .cppm dikompilasi sebagai kode modul C++.
  • Kompil sebagai Partisi Internal Modul C++ (/internalPartition) - Kompil file sumber tertentu sebagai partisi internal modul C++.
  • Kompilasi sebagai Unit Header C++ (/exportHeader) - Kompilasi file sumber tertentu sebagai unit header C++. Secara default, file yang memiliki .h ekstensi atau tidak ada ekstensi dikompilasi sebagai unit kepala.

Nonaktifkan Peringatan Tertentu

Nonaktifkan nomor peringatan yang ditentukan. Letakkan angka peringatan dalam daftar yang dibatasi titik koma. /wd <Mengatur nomor.>

File Sertakan Paksa

satu atau beberapa file yang dipaksakan termasuk. /FI <Mengatur nama.>

File Paksa #using

Menentukan satu atau beberapa file #using wajib. /FU <Mengatur nama.>

Tunjukkan Sertakan

Menghasilkan daftar file yang termasuk dengan output pengompilasi. Mengatur /showIncludes.

Gunakan Jalur Lengkap

Gunakan jalur lengkap dalam pesan diagnostik. Mengatur /FC.

Hilangkan Nama Pustaka Default

Tidak menyertakan nama pustaka default dalam .obj file. Mengatur /Zl.

Pelaporan Kesalahan Kompilator Internal

Catatan

Opsi ini tidak digunakan lagi. Dimulai di Windows Vista, pelaporan kesalahan dikontrol oleh pengaturan Pelaporan Galat Windows (WER).

Perlakukan Peringatan Spesifik Sebagai Kesalahan

Memperlakukan peringatan kompilator tertentu sebagai kesalahan di mana n adalah peringatan kompilator.

Opsi Tambahan

Opsi Tambahan.