ตัวระบุแอตทริบิวต์ might_unused สามารถปรากฏเพียงครั้งเดียวและยังใช้งานได้หรือไม่ [ทำซ้ำ]

ฉันชอบแอตทริบิวต์ [[maybe_unused]] และใช้บ่อยเมื่อต้องคอมไพล์การใช้งานฟังก์ชันเฉพาะการแก้ไขข้อบกพร่อง ฉันสับสนเล็กน้อยว่าควรใช้ตรงไหนเมื่อระบุอาร์กิวเมนต์ฟังก์ชันสมาชิกเป็น [[maybe_unused]]

ที่ให้ไว้:

//Foo.h
class Foo {
    void DebugOnly(Bar& fly);
}

//Foo.cpp
void Foo::DebugOnly(Bar& fly) {
#ifdef _DEBUG
    fly.squish();
#endif
}

การระบุไว้ในทั้งสองแห่งสร้างความแตกต่างหรือไม่?

//Foo.h
class Foo {
    void DebugOnly([[maybe_unused]] Bar& fly);
}

//Foo.cpp
void Foo::DebugOnly([[maybe_unused]] Bar& fly) {
#ifdef _DEBUG
    fly.squish();
#endif
}

หรือฉันควรประกาศเฉพาะในส่วนหัวหรือไฟล์การใช้งาน?

ส่วนหัวเท่านั้น

//Foo.h
class Foo {
    void DebugOnly([[maybe_unused]] Bar& fly);
}

//Foo.cpp
void Foo::DebugOnly(Bar& fly) {
#ifdef _DEBUG
    fly.squish();
#endif
}

ไฟล์การใช้งานเท่านั้น

//Foo.h
class Foo {
    void DebugOnly(Bar& fly);
}

//Foo.cpp
void Foo::DebugOnly([[maybe_unused]] Bar& fly) {
#ifdef _DEBUG
    fly.squish();
#endif
}

หน้าบน cppreference ไม่ได้สร้างความแตกต่างสำหรับอาร์กิวเมนต์ของฟังก์ชันและมีเพียง จัดประเภทเป็นตัวแปร


person Casey    schedule 30.05.2021    source แหล่งที่มา
comment
มีความหมายเฉพาะในประกาศการดำเนินงานเท่านั้น การเพิ่มลงในการประกาศน่าจะไม่มีจุดหมาย   -  person ALX23z    schedule 30.05.2021
comment
@ ALX23z นั่นเรียกว่า คำจำกัดความ   -  person Maciej Załucki    schedule 31.05.2021