Dalam kasus yang jarang terjadi, akan berguna untuk mengubah garis yang diberikan oleh __LINE__
kepada hal lain. Saya telah melihat konfigurasi GNU melakukan itu untuk beberapa tes untuk melaporkan nomor baris yang sesuai setelah itu memasukkan beberapa voodoo antara baris yang tidak muncul dalam file sumber asli. Sebagai contoh:
#line 100
Akan membuat baris berikut dimulai dengan __LINE__
100. Anda dapat menambahkan nama file baru secara opsional
#line 100 "file.c"
Ini jarang berguna. Tetapi jika dibutuhkan, tidak ada alternatif yang saya tahu. Sebenarnya, alih-alih baris, makro dapat digunakan juga yang harus menghasilkan salah satu dari dua bentuk di atas. Menggunakan perpustakaan preprocessor boost, Anda dapat menambah baris saat ini dengan 50:
#line BOOST_PP_ADD(__LINE__, 50)
Saya pikir sangat berguna untuk menyebutkannya karena Anda bertanya tentang penggunaan __LINE__
dan __FILE__
. Satu tidak pernah mendapat cukup kejutan dari C ++ :)
Sunting: @Jonathan Leffler memberikan beberapa kasus penggunaan yang lebih baik dalam komentar:
Messing dengan #line sangat berguna untuk pra-prosesor yang ingin menjaga kesalahan yang dilaporkan dalam kode C pengguna sesuai dengan file sumber pengguna. Yacc, Lex, dan (lebih banyak di rumah bagi saya) ESQL / C preprocessor melakukan itu.