แบบร่างมาตรฐาน C ++ 17 const
หมายถึงstatic
ขอบเขตไฟล์
นี่คือคำพูดสำหรับสิ่งที่กล่าวถึงที่: https://stackoverflow.com/a/3709257/895245
C ++ 17 n4659 ร่างมาตรฐาน 6.5 "โปรแกรมและการเชื่อมโยง":
3 ชื่อที่มีขอบเขตเนมสเปซ (6.3.6) มีการเชื่อมโยงภายในหากเป็นชื่อ
- (3.1) - ตัวแปรฟังก์ชั่นหรือฟังก์ชั่นแม่แบบที่มีการประกาศอย่างคงที่; หรือ,
- (3.2) - ตัวแปรที่ไม่ใช่แบบอินไลน์ของประเภท const ที่ไม่ผ่านการลบเลือนที่ไม่ได้ประกาศอย่างชัดแจ้งภายนอกหรือประกาศก่อนหน้านี้ว่ามีการเชื่อมโยงภายนอก หรือ
- (3.3) - ข้อมูลสมาชิกของสหภาพที่ไม่ระบุชื่อ
ภาคผนวก C (ข้อมูล) ความเข้ากันได้ C.1.2 ข้อ 6: "แนวคิดพื้นฐาน" ให้เหตุผลว่าทำไมสิ่งนี้จึงเปลี่ยนจาก C:
6.5 [ยัง 10.1.7]
เปลี่ยนแปลง: ชื่อของขอบเขตไฟล์ที่ประกาศ const อย่างชัดเจนและไม่เปิดเผยภายนอกอย่างชัดเจนมีการเชื่อมโยงภายในขณะที่ C จะมีการเชื่อมโยงภายนอก
เหตุผล: เนื่องจากวัตถุ const อาจถูกใช้เป็นค่าระหว่างการแปลใน C ++ คุณสมบัตินี้เรียกร้องให้โปรแกรมเมอร์จัดเตรียม initializer อย่างชัดเจนสำหรับวัตถุ const แต่ละตัว คุณลักษณะนี้ช่วยให้ผู้ใช้สามารถวางวัตถุ const ในไฟล์ต้นฉบับที่รวมอยู่ในหน่วยการแปลมากกว่าหนึ่งหน่วย
ผลต่อคุณสมบัติดั้งเดิม: เปลี่ยนความหมายของคุณสมบัติที่กำหนดไว้อย่างดี
ความยากลำบากในการแปลง: การแปลงความหมาย
ใช้กันอย่างแพร่หลาย: ไม่ค่อย
ดูเพิ่มเติม: เหตุใด const จึงแสดงถึงการเชื่อมโยงภายในใน C ++ เมื่อไม่ได้อยู่ใน C
สิ่งที่คุณน่าจะต้องการทำแทนส่วนหัว
อธิบายรายละเอียดได้ที่: 'const static' หมายถึงอะไรใน C และ C ++
- ก่อน C ++ 17:
extern
ในส่วนหัว, คำจำกัดความในไฟล์ cpp
- โพสต์ C ++ 17: ตัวแปรอินไลน์ที่ส่วนหัว
static
น่าจะเป็นคำหลักที่มากเกินไปใน C ++ ความหมายของรหัสของคุณแตกต่างกันอย่างมากขึ้นอยู่กับว่าอยู่ในขอบเขตเนมสเปซที่ขอบเขตคลาสหรือที่ขอบเขตฟังก์ชัน คุณอาจต้องการชี้แจงว่า