ฉันเพิ่งเจอชิ้นส่วนที่ลึกลับของรหัสต่อไปนี้
int main(){(([](){})());}
จัดรูปแบบใหม่ดังต่อไปนี้เพื่อให้อ่านง่ายขึ้น:
int main(){
(([](){})()); // Um... what?!?!
}
แต่ฉันไม่เข้าใจว่า(([](){})())
รหัสถูกต้องอย่างไร
- มันดูเหมือนไวยากรณ์ตัวชี้ฟังก์ชันไม่ได้
- มันไม่สามารถเป็นกลอุบายการบรรทุกเกินพิกัดบางอย่างได้ รหัสคอมไพล์ตามที่เป็นอยู่
Google ไม่ได้ช่วยอะไรมากนักในการค้นหาสัญลักษณ์ทั้งหมด แต่มันก็คอมไพล์ใน Visual Studio 2010 และไม่มีผลอะไร ไม่มีข้อผิดพลาดและไม่มีคำเตือน ดังนั้นดูเหมือนรหัสที่ถูกต้อง
ผมไม่เคยเห็นรหัสที่ถูกต้องใด ๆ ที่อยู่นอกมหัศจรรย์ของJavascriptและC คำแนะนำการทำงาน
บางคนสามารถอธิบายได้ว่าวิธีนี้ใช้ได้อย่างไร C ++
Don't sweat it. We have int main(){(([](){})());} which is valid C++"
(แชท 9 พ.ย. )