Katakanlah saya memiliki file sumber dengan banyak arahan preprocessor. Apakah mungkin untuk melihat tampilannya setelah preprosesor selesai?
206
Katakanlah saya memiliki file sumber dengan banyak arahan preprocessor. Apakah mungkin untuk melihat tampilannya setelah preprosesor selesai?
Jawaban:
cl.exe
, antarmuka baris perintah ke Microsoft Visual C ++, memiliki tiga opsi berbeda untuk menghasilkan file yang telah diproses (karenanya inkonsistensi dalam respons sebelumnya tentang Visual C ++):/E
: preprocess to stdout (mirip dengan opsi -E GCC)/P
: preprocess ke file/EP
: preprocess ke stdout tanpa arahan #lineJika Anda ingin memproses ulang file tanpa arahan #line, gabungkan opsi
/P
dan/EP
.sumber
/P
akan menekan pembuatan file obj. Jadi, jika Anda meletakkan/P
opsi, Anda mungkin mendapatkan tautan kesalahan yang mengatakan beberapa file obj tidak dapat ditemukan karena sebenarnya tidak dihasilkan sama sekali.VS Developer command prompt
dan TIDAK masukCommand prompt
saat mencoba menggunakan kompiler MS (cl
). Kompiler tidak tersedia dalam prompt perintah konvensional.Sebagian besar kompiler memiliki opsi untuk hanya menjalankan preprocessor. misalnya , gcc menyediakan -E:
Jadi Anda bisa menjalankan:
Jika Anda tidak dapat menemukan opsi seperti itu, Anda juga dapat menemukan preprosesor C pada mesin Anda. Biasanya disebut cpp dan mungkin sudah ada di jalur Anda. Aktifkan seperti ini:
Jika ada tajuk yang perlu Anda sertakan dari direktori lain, Anda bisa meneruskan -I / path / ke / menyertakan / dir ke salah satu dari ini, sama seperti yang Anda lakukan dengan kompilasi biasa.
Untuk Windows, saya akan menyerahkannya ke poster lain untuk memberikan jawaban karena saya bukan ahli di sana.
sumber
Klik kanan pada file pada Solution Explorer, goto Properties. Di bawah Configuration Properties-> C / C ++ -> Preprocessor, "Generate Preprocessed File" adalah apa yang Anda cari. Kemudian klik kanan pada file di Solution Explorer dan pilih "Kompilasi". File yang sudah diproses dibuat di direktori output (mis. Release, Debug) dengan ekstensi .i (terima kasih kepada Steed untuk komentarnya).
sumber
Release
,Debug
) dengan ekstensi.i
.Anda biasanya perlu melakukan beberapa postprocessing pada output preprocessor, jika tidak semua makro hanya memperluas ke satu liners, yang sulit dibaca dan debug. Untuk kode C, sesuatu seperti yang berikut sudah cukup:
Untuk kode C ++, sebenarnya jauh lebih sulit. Untuk GCC / g ++, saya menemukan skrip Perl ini berguna.
sumber
Saya tidak tahu apa-apa tentang kompiler Microsoft, tetapi pada GCC Anda dapat menggunakan ini:
Jika Anda ingin melihat komentar, gunakan ini:
Opsi lainnya tersedia di halaman ini .
sumber
Coba
cl /EP
jika Anda menggunakan kompiler C ++ Microsoft.sumber
Di Visual Studio Anda dapat mengkompilasi file (atau proyek) dengan / P.
sumber
Ketika bk1e dan Andreas M. menjawab, opsi / P untuk kompiler akan membuatnya memproses file. Namun, dalam proyek saya menggunakan VS2005 dan Platform Builder (untuk prosesor ARM tertanam), proyek tidak menyajikan opsi di kotak dialog (seperti yang dijelaskan oleh Jim B) untuk mengaktifkan opsi itu.
Saya bisa menjalankan CL secara manual dan menambahkan / P, tetapi gagal karena saya tidak tahu semua opsi baris perintah yang tepat yang secara kasat mata sedang diaktifkan oleh Platform Builder selama pembangunan penuh. Jadi saya perlu tahu semua opsi itu.
Solusi saya adalah mencari di file build.log, dan temukan baris yang dieksekusi
CL blah-blah-blah myfile.c
Saya menyalin baris ini ke clipboard. Bagian "bla-bla-bla" berisi opsi build, dan sangat besar.
Kembali ke IDE, saya mengklik kanan myfile.c, memilih "Open Build Window", dan kemudian di jendela itu saya menempelkan baris perintah build, dan menambahkan "/ P".
CL /P blah-blah-blah myfile.c
Selesai File myfile.i diproduksi, yang berisi output preprocessor.
sumber
CPIP adalah preprocessor C / C ++ baru yang ditulis dengan Python. Jika Anda ingin representasi visual terperinci dari file yang telah diproses, cobalah.
sumber
Pada OS Windows, jawaban satu baris sederhana untuk pertanyaan ini adalah dengan menggunakan perintah di bawah ini di DOS prompt untuk melihat file yang sudah diproses:
Ini akan menghasilkan file bernama myprogram.i . Buka dan lihat preprosesor Anda yang diperluas.
sumber