Macros are implemented by the C++ preprocessor on the textual source code before it is submitted to the C++ compiler. `constexpr` are part of the language itself and are evaluated by the compiler at compile time.

Both can be used to define compile-time constants but in general `constexpr` should be preferred because it does not suffer from the problems of the C++ preprocessor such as accidental name conflicts with other variables in scope.
 มาโครถูกนำมาใช้โดยตัวประมวลผลล่วงหน้า C++ บนซอร์สโค้ดที่เป็นข้อความก่อนที่จะถูกส่งไปยังคอมไพเลอร์ C++ `constexpr` เป็นส่วนหนึ่งของภาษาและได้รับการประเมินโดยคอมไพเลอร์ในเวลาคอมไพล์ ทั้งสองสามารถใช้เพื่อกำหนดค่าคงที่เวลาคอมไพล์ได้ แต่โดยทั่วไปแล้วควรใช้ `constexpr` เนื่องจากไม่มีปัญหาจากตัวประมวลผลล่วงหน้า C++ เช่น ชื่อที่ไม่ได้ตั้งใจขัดแย้งกับตัวแปรอื่นในขอบเขต
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence