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.