Anda dapat menggunakan atribut gcc / clang yang tidak digunakan, namun saya menggunakan makro ini di header untuk menghindari memiliki atribut spesifik gcc di seluruh sumber, juga memiliki di __attribute__
mana - mana sedikit verbose / jelek.
#ifdef __GNUC__
# define UNUSED(x) UNUSED_ ## x __attribute__((__unused__))
#else
# define UNUSED(x) UNUSED_ ## x
#endif
#ifdef __GNUC__
# define UNUSED_FUNCTION(x) __attribute__((__unused__)) UNUSED_ ## x
#else
# define UNUSED_FUNCTION(x) UNUSED_ ## x
#endif
Maka kamu bisa melakukan ...
void foo(int UNUSED(bar)) { ... }
Saya lebih suka ini karena Anda mendapatkan kesalahan jika Anda mencoba menggunakan bar
kode di mana saja sehingga Anda tidak dapat meninggalkan atribut secara tidak sengaja.
dan untuk fungsi ...
static void UNUSED_FUNCTION(foo)(int bar) { ... }
Catatan 1):
Sejauh yang saya tahu, MSVC tidak memiliki yang setara dengan __attribute__((__unused__))
.
Catatan 2):
The UNUSED
makro tidak akan bekerja untuk argumen yang mengandung kurung,
jadi jika Anda memiliki argumen seperti float (*coords)[3]
Anda tidak dapat melakukan,
float UNUSED((*coords)[3])
atau float (*UNUSED(coords))[3]
, ini adalah satu-satunya downside ke UNUSED
makro saya menemukan sejauh ini, dalam kasus ini saya jatuh kembali untuk(void)coords;