9
ฉันจะเรียกใช้ฟังก์ชัน C ++ แบบพกพาที่ใช้ถ่าน ** บนบางแพลตฟอร์มและ const char ** บนแพลตฟอร์มอื่น ๆ ได้อย่างไร
บนเครื่อง Linux (และ OS X) ของฉันiconv()ฟังก์ชั่นมีต้นแบบนี้: size_t iconv (iconv_t, char **inbuf... ในขณะที่ FreeBSD จะมีลักษณะดังนี้: size_t iconv (iconv_t, const char **inbuf... ฉันต้องการให้โค้ด C ++ ของฉันสร้างบนทั้งสองแพลตฟอร์ม ด้วยคอมไพเลอร์ C การส่งผ่านchar**สำหรับconst char**พารามิเตอร์ (หรือในทางกลับกัน) มักจะส่งเสียงเตือนเท่านั้น อย่างไรก็ตามใน C ++ เป็นข้อผิดพลาดร้ายแรง ดังนั้นถ้าฉันผ่าน a char**มันจะไม่รวบรวมบน BSD และถ้าฉันส่งผ่านconst char**มันจะไม่คอมไพล์บน Linux / OS X ฉันจะเขียนโค้ดที่คอมไพล์ทั้งสองอย่างโดยไม่ต้องพยายามตรวจจับแพลตฟอร์มได้อย่างไร แนวคิด (ล้มเหลว) อย่างหนึ่งที่ฉันมีคือการจัดเตรียมต้นแบบท้องถิ่นที่แทนที่ส่วนหัวที่ให้มา: void myfunc(void) …
91
c++
const
portability