IBM XL C/C++ Compiler: ตรวจสอบโหมดคอมไพเลอร์โดยใช้คำสั่งตัวประมวลผลล่วงหน้า

ฉันกำลังพยายามคอมไพล์ไฟล์ c++ ตัวอย่าง test.cpp โดยใช้คอมไพเลอร์ IBM xlC บนระบบ AIX ไฟล์ควรได้รับการคอมไพล์ทั้งในโหมด 32 บิตและ 64 บิต ฉันใช้คำสั่งต่อไปนี้เพื่อคอมไพล์ในทั้งสองโหมด:

xlC test.cpp (โหมดคอมไพเลอร์เริ่มต้นคือ 32 บิต)

xlC -q64 test.cpp

ภายใต้ test.cpp ฉันต้อง printf("Using 32-bit compiler") หากคอมไพล์สำหรับ 32 บิต และ printf("Using 64-bit compiler") หากคอมไพล์สำหรับ 64 บิต

ฉันจะบรรลุเป้าหมายนี้ได้อย่างไรโดยใช้เงื่อนไขของตัวประมวลผลล่วงหน้า มีมาโครที่กำหนดไว้ล่วงหน้าสำหรับคอมไพเลอร์หรือสถาปัตยกรรมเครื่องที่บอกความแตกต่างหรือไม่


person Jatin Sanghvi    schedule 27.12.2010    source แหล่งที่มา


คำตอบ (1)


ใน XLC หากคุณใช้แฟล็ก -q64 แมโคร __64BIT__ จะถูกกำหนดไว้

ส่งตรงจาก เอกสารประกอบของ IBM XL C/C++:

หากคอมไพเลอร์ถูกเรียกใช้ในโหมด 64 บิต จะมีการกำหนดแมโครตัวประมวลผลล่วงหน้า __64BIT__

person wkl    schedule 27.12.2010
comment
ขอบคุณมาก. __64BIT__ คือ #กำหนดโดยคอมไพเลอร์ของฉัน - person Jatin Sanghvi; 27.12.2010