Apakah mungkin, menggunakan preprocessor C / C ++, untuk menghitung baris dalam file sumber, menjadi makro atau semacam kompilasi-nilai waktu yang tersedia? Misalnya saya bisa mengganti MAGIC1
, MAGIC2
dan MAGIC3
berikut ini, dan mendapatkan nilai 4 entah bagaimana saat menggunakan MAGIC3
?
MAGIC1 // can be placed wherever you like before the relevant
// lines - either right before them, or in global scope etc.
foo(); MAGIC2
bar(); MAGIC2
baz(); MAGIC2
quux(); MAGIC2
// ... possibly a bunch of code here; not guaranteed to be in same scope ...
MAGIC3
Catatan:
- Ekstensi khusus kompiler untuk kemampuan preprosesor dapat diterima tetapi tidak diinginkan.
- Jika ini hanya mungkin dengan bantuan beberapa C ++, sebagai lawan C, konstruk, itu juga dapat diterima tetapi tidak diinginkan (yaitu saya ingin sesuatu yang akan bekerja untuk C).
- Jelas ini dapat dilakukan dengan menjalankan file sumber melalui beberapa skrip prosesor eksternal, tapi bukan itu yang saya tanyakan.
__COUNTER__
dan / atau BOOST_PP_COUNTER
?
int arr[MAGIC4]
dan mendapatkan jumlah baris di beberapa bagian kode saya yang sebelumnya dihitung.
__LINE__
yang mewakili nomor baris saat ini