มาโครพบที่นี่:
แนวทางทั่วไปพบได้ที่นี่:
โปรดส่งการอัปเดต/การแก้ไขไปยัง predef-intribute หรือผ่านการร้องขอการดึงบน GitHub
คอมไพเลอร์ C และ C ++ กำหนดมาโครบางอย่างโดยอัตโนมัติที่สามารถใช้เพื่อตรวจสอบคุณสมบัติคอมไพเลอร์หรือระบบปฏิบัติการ สิ่งนี้มีประโยชน์เมื่อเขียนซอฟต์แวร์แบบพกพา
หน้าเหล่านี้แสดงรายการมาโครคอมไพเลอร์ที่กำหนดไว้ล่วงหน้าหลายรายการซึ่งสามารถใช้ในการระบุมาตรฐานคอมไพเลอร์ระบบปฏิบัติการสถาปัตยกรรมฮาร์ดแวร์และแม้แต่ไลบรารีระยะเวลาพื้นฐานในเวลาคอมไพล์
ตัวอย่างเช่นหากเราต้องการใช้ประเภทตัวชี้ทั่วไปหรือทึบแสงเราจะใช้พอยน์เตอร์โมฆะ อย่างไรก็ตามคอมไพเลอร์ K&R โบราณ (ตั้งแต่เวลาก่อนมาตรฐาน ANSI C แรก) ไม่รองรับพอยน์เตอร์โมฆะ แต่เราสามารถกำหนดประเภทของเราเอง:
#if defined( __STDC__ ) || defined( __cplusplus ) || defined( _MSC_EXTENSIONS )
typedef void * t_pointer ;
#else
typedef char * t_pointer ;
#endif อีกตัวอย่างหนึ่งคือ Microsoft Visual C ++ เวอร์ชัน 4.2 เพิ่ม pragma เพื่อลดเวลาการรวบรวมโดยรวมเฉพาะไฟล์หนึ่งครั้ง (ถ้า _MSC_VER ไม่ได้กำหนดไว้แล้วมันจะประเมินเป็น 0 (ศูนย์) - อย่างไรก็ตามคอมไพเลอร์บางตัวอาจบ่นเกี่ยวกับแมโครที่ไม่ได้กำหนด)
#if defined( _MSC_VER ) && ( _MSC_VER >= 1020 )
#pragma once
#endifมาโครที่มีอยู่ในหน้าเหล่านี้ได้รับผ่านเอกสารของผู้ขายสคริปต์กำหนดผู้มีส่วนร่วมและซอร์สโค้ดของบุคคลที่สาม ไม่มีการรับประกันเกี่ยวกับความถูกต้องของมาโคร
ทางเลือกที่ใช้บ่อยคือ AutoConf ซึ่งเป็นเครื่องมือที่ทรงพลังกว่าในการตรวจสอบคุณสมบัติประเภทต่าง ๆ รวมถึงตัวเลือกการรวบรวม อย่างไรก็ตาม AutoCONF นั้นค่อนข้างเป็นศูนย์กลางและต้องใช้เลเยอร์ UNIX บนแพลตฟอร์มอื่น ๆ (เช่น Cygwin บน Windows) ทางเลือกอื่นคือ buildtool, cmake, scons, pmk, แยม, มดและ bakefile
Bjorn Reese, Daniel Stenberg, Greg Roelofs, Steven G. Johnson, Wlodzimierz Abx Skiba, Marc Finet, Philip Newton, การกุศล Mitchell, Christian Klutz, Seo Sanghyeon, Chris Adami, Geoff Clare, Dan Fandrich Vadim Zeitlin, Steve White, Thomas David Rivers, Tom Honermann, Martin Mitas, Dinesh Chhadwa, Erik Faye-Lund, Leo Davis, Paul Hsieh, Roland Schwarz, Darko Kolakovic Rodriguez Garcia, Jeroen Ruigrok van der Werven, Uffe Jakobsen, Bryan Ashby, Bruno Haible, Artur Bac, Terry Schwarz, Leo Davis, Markus Duft, William Dang, Paul Green, Ruben Van Boxem Hans-Christoph Steiner, Gerald Combs, Denys Bulant, Massimo Morara, Jeremy Bennett, Guillem Jover, Riku Voipio, Jacques Pelletier, Mark Jarvin, Georg Sauthoff, Scot Jenkins Groenewoudt, Andreas Mohr, аексейрецкий, Sverre Hvammen Johansen, Stefan Tauner, Daniel Garcia, Ozkan Sezer, Dean Saridakis, Frank Long, Kevin Adler