/vmm
, , /vms
/vmv
(Representasi Tujuan Umum)
Digunakan saat /vmg
dipilih sebagai metode representasi. Opsi ini menunjukkan model warisan dari definisi kelas yang belum ditemui.
Sintaks
/vmm
/vms
/vmv
Opsi
/vmm
Menentukan representasi penunjuk yang paling umum ke anggota kelas sebagai yang menggunakan beberapa pewarisan.
Kata kunci dan argumen #pragma pointers_to_members
warisan yang sesuai adalah multiple_inheritance
.
Representasi ini lebih besar dari yang diperlukan untuk warisan tunggal.
Jika Anda menggunakan /vmm
dan mendeklarasikan penunjuk ke anggota kelas yang memiliki model pewarisan virtual, kompilator akan menghasilkan kesalahan.
/vms
Menentukan representasi penunjuk yang paling umum ke anggota kelas sebagai yang tidak menggunakan warisan atau pewarisan tunggal. Kata kunci dan argumen #pragma pointers_to_members
warisan yang sesuai adalah single_inheritance
.
Opsi ini menghasilkan representasi penunjuk sekecil mungkin kepada anggota kelas.
Jika Anda menggunakan /vms
dan mendeklarasikan penunjuk ke anggota kelas yang memiliki model beberapa atau pewarisan virtual, kompilator akan menghasilkan kesalahan.
/vmv
Menentukan representasi paling umum dari pointer ke anggota kelas sebagai yang menggunakan pewarisan virtual. Representasi pointer ini tidak pernah menyebabkan kesalahan dan merupakan default.
Kata kunci dan argumen #pragma pointers_to_members
warisan yang sesuai adalah virtual_inheritance
.
Opsi ini memerlukan penunjuk yang lebih besar dan lebih banyak kode untuk menginterpretasikan penunjuk daripada opsi lainnya.
Keterangan
Di Visual Studio 2019 dan versi yang lebih lama, Microsoft menggunakan representasi yang berbeda (dengan ukuran yang berbeda) untuk jenis pointer-to-member. Penunjuk ke anggota kelas yang tidak memiliki warisan atau warisan tunggal memiliki representasi terkecil. Penunjuk ke anggota kelas yang memiliki beberapa warisan lebih besar. Penunjuk ke anggota kelas yang memiliki warisan virtual adalah yang terbesar. Ketika tidak ada model representasi yang ditentukan untuk pengkompilasi, model defaultnya menggunakan representasi terbesar dan paling umum.
Saat Anda menentukan salah satu opsi model pewarisan ini, model tersebut akan digunakan untuk semua penunjuk ke anggota kelas, apa pun jenis pewarisannya atau apakah Anda mendeklarasikan penunjuk sebelum atau sesudah kelas. Jika Anda selalu menggunakan kelas pewarisan tunggal, Anda dapat mengurangi ukuran kode dengan mengkompilasi dengan /vms
. Namun, jika Anda ingin menggunakan kasus paling umum (dengan mengorbankan representasi data terbesar), kompilasi dengan /vmv
.
Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Properti>Konfigurasi C/C++>Baris Perintah.
Masukkan opsi pengkompilasi dalam kotak Opsi Tambahan.
Untuk mengatur opsi pengkompilasi ini secara terprogram
- Lihat AdditionalOptions.
Baca juga
/vmb
, /vmg
(Metode representasi)
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk