Saya ingin bisa melakukan sesuatu seperti
#print "C Preprocessor got here!"
untuk tujuan debugging. Apa cara terbaik / paling portabel untuk melakukan ini?
Saya ingin bisa melakukan sesuatu seperti
#print "C Preprocessor got here!"
untuk tujuan debugging. Apa cara terbaik / paling portabel untuk melakukan ini?
Jawaban:
The warning
direktif mungkin yang paling dekat Anda akan mendapatkan, tapi itu tidak sepenuhnya platform-independen:
#warning "C Preprocessor got here!"
AFAIK ini berfungsi pada sebagian besar kompiler kecuali MSVC, di mana Anda harus menggunakan pragma
arahan:
#pragma message ( "C Preprocessor got here!" )
#define WARNING(msg) _Pragma("message " #msg)
Berikut ini didukung oleh MSVC , dan GCC .
#pragma message("stuff")
#pragma message "stuff"
Clang baru-baru ini mulai menambahkan dukungan, lihat di sini untuk selengkapnya.
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 menulis printf("TODO ...")
ke dalam *.c
file keluaran .
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:
#ifdef ...
printf("Hello");
#endif
Karena hanya ini yang dapat Anda lakukan sejauh preprosesor bekerja.
#ifdef _LINUX #define #preprocmsg "#warning" else #define #preprocmsg "#pragma message"
... Saya harus mencobanya tetapi naluri memberi tahu saya jawabannya tidak.