/D (Definisi Praproscessor)
Menentukan simbol pra-pemrosesan untuk file sumber.
Sintaks
/D
[ ]name[=
|#
[{ string | number }] ]
/D
[ ]"
name[=
|#
[{ string | number }] ]"
Keterangan
Anda dapat menggunakan simbol ini bersama dengan #if
atau #ifdef
untuk mengkompilasi kode sumber secara kondisional. Definisi simbol tetap berlaku sampai didefinisikan ulang dalam kode, atau tidak terdefinisi dalam kode oleh arahan #undef
.
/D
memiliki efek yang sama dengan #define
direktif di awal file kode sumber. Perbedaannya adalah bahwa /D
strip tanda kutip pada baris perintah, dan arahan #define
menyimpannya. Anda dapat memiliki spasi kosong antara /D
simbol dan . Tidak boleh ada spasi kosong antara simbol dan tanda sama dengan, atau antara tanda sama dengan dan nilai apa pun yang ditetapkan.
Secara default, nilai yang terkait dengan simbol adalah 1. Misalnya, /D name
sama dengan /D name=1
. Dalam contoh di akhir artikel ini, definisi TEST
ditampilkan untuk mencetak 1
.
Mengkompilasi dengan menggunakan /D name=
menyebabkan nama simbol tidak memiliki nilai terkait. Meskipun simbol masih dapat digunakan untuk mengkompilasi kode secara kondisional, itu jika tidak mengevaluasi ke apa-apa. Dalam contoh, jika Anda mengkompilasi dengan menggunakan /DTEST=
, kesalahan terjadi. Perilaku ini menyerupan penggunaan #define
dengan atau tanpa nilai.
Opsi /D
tidak mendukung definisi makro seperti fungsi. Untuk menyisipkan definisi yang tidak dapat ditentukan pada baris perintah, pertimbangkan /FI
opsi pengkompilasi (Nama paksa sertakan file).
Anda dapat menggunakan /D
beberapa kali pada baris perintah untuk menentukan lebih banyak simbol. Jika simbol yang sama didefinisikan lebih dari sekali, definisi terakhir digunakan.
Perintah ini mendefinisikan simbol DEBUG di TEST.c:
CL /DDEBUG TEST.C
Perintah ini menghapus semua kemunculan kata kunci __far
di TEST.c:
CL /D __far= TEST.C
Variabel lingkungan CL tidak dapat diatur ke string yang berisi tanda sama dengan. Untuk menggunakan /D
bersama dengan CL
variabel lingkungan, Anda harus menentukan tanda angka (#
) alih-alih tanda sama dengan:
SET CL=/DTEST#0
Saat Anda menentukan simbol pra-pemrosesan di prompt perintah, pertimbangkan aturan penguraian kompilator dan aturan penguraian shell. Misalnya, untuk menentukan simbol pra-pemrosesan tanda persen (%
) dalam program Anda, tentukan dua karakter tanda tangan persen (%%
) pada prompt perintah. Jika Anda hanya menentukan satu, kesalahan penguraian dipancarkan.
CL /DTEST=%% TEST.C
Untuk mengatur opsi pengkompilasi ini di lingkungan pengembangan Visual Studio
Buka kotak dialog Halaman Properti proyek. Untuk informasi selengkapnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.
Pilih halaman properti Properti>Konfigurasi C/C++>Preprocessor.
Buka menu drop-down properti Definisi Praprosesor dan pilih Edit.
Dalam kotak dialog Definisi Praproscesor , tambahkan, ubah, atau hapus satu atau beberapa definisi, satu per baris. Pilih OK untuk menyimpan perubahan.
Anda tidak perlu menyertakan awalan opsi '/D' pada definisi yang Anda tentukan di sini. Di halaman properti, definisi dipisahkan oleh titik koma (
;
).
Untuk mengatur opsi pengkompilasi ini secara terprogram
- Lihat PreprocessorDefinitions.
Contoh
// cpp_D_compiler_option.cpp
// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#include <stdio.h>
int main( )
{
#ifdef TEST
printf_s("TEST defined %d\n", TEST);
#else
printf_s("TEST not defined\n");
#endif
}
TEST defined 1
Lihat juga
Opsi pengkompilasi MSVC
Sintaks baris perintah pengkompilasi MSVC
/FI
(Nama dipaksa sertakan file)
/U
, /u
(Simbol Tidak Terdefinisi)
#undef
Direktif (C/C++)
#define
Direktif (C/C++)