Nein, da wir auch den Compiler wechseln können wollen. Da könnte ich jetzt eine #ifdef - #define - #endif Serie setzen, aber das finde ich unschön. Es ist Policy Präprozessoranweisungen auf ein Minimum zu halten.
Bei deinem konkreten Fall versuchen wir in der Regel wirklich alles so zu definieren, das die Parameter tatsächlich gebraucht werden. In C geht das auch i.d.R..
Bei C++ ist das kniffliger. Wenn es da nicht anders geht konsumieren wir die Variablen künstlich, a la:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/**
* eats up variable foo to satisfy compiler
*
* @param foo var to be eaten
*/
void eatup_foo(int foo) {
static int g_foo = 0;
g_foo = foo;
}
void bar(int foo) {
/* we don't use foo here */
eatup_foo(foo);
/* rest of the function */
}
|
Zugegeben, das ist genauso unhübsch und irgendwann wird der gcc das erkennen, dass die static variable da nicht public ist und anfangen auch hier zu meckern. Es ergibt ja so keinen Sinn. Ist also ein echter Hack wie ich allein und ausschließlich "error: unused parameter ‘foo’" umschiffe.
Es ist aber noch innerhalb der Sprache und frei von compilerrelevanten Anweisungen.