Rumah >pembangunan bahagian belakang >C++ >Mengapakah `xstr(foo)` Output '4' Manakala `str(foo)` Output 'foo' dalam Pengembangan Makro seperti C?
Memahami Stringifikasi: Langkah Utama Pengembangan Makro
Konsep rentetan dalam bahasa seperti C membolehkan anda menukar ungkapan kepada rentetan. Memahami langkah-langkah yang terlibat dalam proses ini adalah penting untuk penggunaan makro yang berkesan.
Masalah: Perbezaan dalam Output
Pertimbangkan definisi makro berikut:
#define foo 4 #define str(s) #s
Apabila anda menggunakan str(foo) dalam kod anda, ia akan mengeluarkan "foo" kerana rentetan (langkah 1) dilakukan sebelum pengembangan teks (langkah 2).
Walau bagaimanapun, jika anda mentakrifkan makro tambahan:
#define xstr(s) str(s)
Dan gunakan xstr(foo), outputnya akan menjadi "4". Perbezaan ini memerlukan penerokaan proses rentetan.
Langkah-langkah Pengembangan Makro
Proses pengembangan makro melibatkan beberapa langkah, mengikut piawaian C dan C:
Menggunakan Langkah untuk xstr(foo)
Mengapa str(foo) Menghasilkan "foo"
Berbeza dengan xstr(foo), str(foo) menghasilkan "foo" kerana:
Oleh itu, penggunaan makro pembantu seperti xstr memastikan pengembangan teks (langkah 2) dilakukan sebelum rentetan (langkah 1), membenarkan penukaran rentetan yang betul .
Atas ialah kandungan terperinci Mengapakah `xstr(foo)` Output '4' Manakala `str(foo)` Output 'foo' dalam Pengembangan Makro seperti C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!