Makro dan C++
C++ menawarkan kemampuan baru, beberapa di antaranya mendukung yang ditawarkan oleh prapemrosedur ANSI C. Kemampuan baru ini meningkatkan keamanan jenis dan prediksi bahasa:
Di C++, objek yang dideklarasikan sebagai
const
dapat digunakan dalam ekspresi konstanta. Ini memungkinkan program untuk mendeklarasikan konstanta yang memiliki informasi jenis dan nilai. Mereka dapat mendeklarasikan enumerasi yang dapat dilihat secara simbolis dengan debugger. Ketika Anda menggunakan direktif praproscessor#define
untuk menentukan konstanta, itu tidak tepat, dan tidak aman jenis. Tidak ada penyimpanan yangconst
dialokasikan untuk objek, kecuali program berisi ekspresi yang mengambil alamatnya.Kemampuan fungsi sebaris C++ mendukung makro jenis fungsi. Keuntungan menggunakan fungsi sebaris daripada makro adalah:
Keselamatan jenis. Fungsi sebaris tunduk pada pemeriksaan jenis yang sama dengan fungsi normal. Makro tidak aman tipe.
Penanganan argumen yang benar yang memiliki efek samping. Fungsi sebaris mengevaluasi ekspresi yang disediakan sebagai argumen sebelum isi fungsi dimasukkan. Oleh karena itu, tidak ada kemungkinan bahwa ekspresi dengan efek samping tidak akan aman.
Untuk informasi selengkapnya tentang fungsi sebaris, lihat sebaris, __inline, __forceinline.
Untuk kompatibilitas mundur, semua fasilitas praprosesor yang ada di ANSI C dan dalam spesifikasi C++ sebelumnya dipertahankan untuk Microsoft C++.