Saya ingin bisa melakukan sesuatu seperti
#print "C Preprocessor got here!"
untuk tujuan debugging. Apa cara terbaik / paling portabel untuk melakukan ini?
printing
c-preprocessor
Andrew Wagner
sumber
sumber
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Saya harus mencobanya tetapi naluri memberi tahu saya jawabannya tidak.#define WARNING(msg) _Pragma("message " #msg)
Berikut ini didukung oleh MSVC , dan GCC .
Clang baru-baru ini mulai menambahkan dukungan, lihat di sini untuk selengkapnya.
sumber
Anda mungkin ingin mencoba:
#pragma message("Hello World!")
sumber
Kebanyakan kompiler C akan mengenali sebuah
#warning
direktif, jadiAda juga petunjuk standar '#error',
Sementara semua kompiler mendukungnya, itu juga akan menghentikan kompilasi / preprocessing.
sumber
bekerja dengan baik. Juga tidak akan menghentikan kompilasi bahkan jika Anda menggunakan -Werror
sumber
Solusi lain adalah menggunakan komentar ditambah skrip shell untuk memprosesnya. Ini membutuhkan beberapa disiplin (atau skrip shell yang menangkap kesalahan ketik).
Misalnya, saya menambahkan komentar yang diformat
//TODO
dan kemudian skrip shell yang mengumpulkan semuanya menjadi laporan.Untuk kasus penggunaan yang lebih kompleks, Anda dapat mencoba menulis preprocessor sederhana Anda sendiri. Misalnya, Anda dapat mengedit sumber Anda sebagai
*.c2
file. Praprosesor sederhana akan membaca sumber, mencari//TODO
, dan menulisprintf("TODO ...")
ke dalam*.c
file keluaran .sumber
Tidak boleh. Praprosesor diproses sebelum kode C. Tidak ada arahan preprocessor untuk dicetak ke layar, karena kode preprocessor tidak dijalankan, itu digunakan untuk menghasilkan kode C yang akan dikompilasi menjadi kode yang dapat dieksekusi.
Ada yang salah dengan:
Karena hanya ini yang dapat Anda lakukan sejauh preprosesor bekerja.
sumber