Dokumen ini di bagian 2.6 Termasuk Dihitung memiliki paragraf berikut:
Jika garis meluas ke aliran token yang dimulai dengan token <, dan termasuk token>, maka token antara <dan yang pertama> digabungkan untuk membentuk nama file yang akan disertakan. Setiap spasi putih antara token dikurangi menjadi satu ruang; maka setiap ruang setelah inisial <dipertahankan, tetapi ruang trailing sebelum penutupan> diabaikan . CPP mencari file sesuai dengan aturan untuk angle-bracket termasuk.
Saya tahu ini adalah implementasi yang didefinisikan, tetapi mengapa harus seperti ini untuk GCC? Saya merujuk secara khusus pada kalimat yang disorot di atas.
EDIT
Saya baru saja memperhatikan bahwa paragraf ketiga sebelum yang dikutip di atas mengatakan sebagai berikut:
Anda harus berhati-hati saat mendefinisikan makro.
#define
menyimpan token, bukan teks. Preprosesor tidak memiliki cara untuk mengetahui bahwa makro akan digunakan sebagai argumen#include
, sehingga menghasilkan token biasa, bukan nama header. Ini tidak akan menimbulkan masalah jika Anda menggunakan double-quote include, yang cukup dekat dengan konstanta string. Namun, jika Anda menggunakan kurung sudut, Anda mungkin mengalami masalah .
Adakah yang tahu masalah apa yang ditunjukkan di sini?