Share via


/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

  1. Buka kotak dialog Halaman Properti proyek. Untuk informasi selengkapnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti>Konfigurasi C/C++>Preprocessor.

  3. Buka menu drop-down properti Definisi Praprosesor dan pilih Edit.

  4. 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

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

Baca 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++)