Menggabungkan Rentetan dengan Makro C/C
Dalam C dan C , makro menyediakan cara yang mudah untuk menentukan pemalar dan melaksanakan penggantian teks semasa pra -memproses. Katakan anda mempunyai dua makro, STR1 dan STR2, ditakrifkan seperti berikut:
#define STR1 "s" #define STR2 "1"
Anda ingin menggabungkan STR1 dan STR2 untuk mendapatkan "s1". Adakah terdapat cara mudah untuk melakukan ini dengan satu makro yang menghasilkan rentetan yang dikehendaki?
Pendekatan Langsung
Tidak seperti token dalam kod, makro diproses oleh prapemproses sebelum penyusunan. Oleh itu, anda tidak boleh menggunakan operator seperti ' ' untuk menggabungkan rentetan secara langsung dengan makro. Walau bagaimanapun, bergantung pada sintaks tertentu, adalah mungkin untuk mencapainya.
Dalam kes ini, C membenarkan anda untuk menggabungkan literal rentetan yang dipisahkan oleh ruang putih semasa pengembangan makro. Dengan mengubah suai takrifan STR3 seperti berikut, anda boleh mencapai hasil yang diingini:
#define STR3 STR1 STR2
Ini berkembang kepada:
#define STR3 "s" "1"
Dalam C, memisahkan dua rentetan dengan ruang putih adalah bersamaan dengan mencipta rentetan tunggal. Oleh itu, STR3 berkembang kepada rentetan "s1".
Pendekatan Alternatif
Jika pendekatan langsung tidak berfungsi dalam senario anda, kaedah alternatif termasuk menggunakan syarat prapemproses atau lulus argumen kepada makro induk yang melakukan penggabungan. Pendekatan ini mungkin lebih kompleks tetapi memberikan lebih fleksibiliti dalam situasi yang berbeza.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggabungkan Rentetan Menggunakan Makro C/C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!