Bisakah penentu atribut might_unused hanya muncul sekali dan masih berfungsi? [duplikat]

Saya menyukai atribut [[maybe_unused]] dan sering menggunakannya ketika saya perlu mengkompilasi implementasi fungsi khusus debug. Saya sedikit bingung di mana ini harus digunakan ketika menentukan argumen fungsi anggota sebagai [[maybe_unused]].

Diberikan:

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

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

Apakah menentukannya di kedua tempat membuat perbedaan?

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

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

Atau haruskah saya mendeklarasikannya hanya di header atau file implementasi?

Hanya untuk header

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

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

Hanya file implementasi

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

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

Laman di cppreference tidak membedakan argumen fungsi dan hanya mengklasifikasikannya sebagai variabel.


person Casey    schedule 30.05.2021    source sumber
comment
Ini hanya mempunyai arti dalam deklarasi implementasi. Menambahkannya ke dalam deklarasi kemungkinan besar tidak ada gunanya.   -  person ALX23z    schedule 30.05.2021
comment
@ALX23z Itu disebut definisi.   -  person Maciej ZaƂucki    schedule 31.05.2021