Dans le langage C, afin d'initialiser une variable locale statique à une inconnue de valeur je normalement faire lors de la compilation, quelque chose comme ceci (par exemple):Initialiser une variable locale statique à une inconnue de valeur lors de la compilation
void func()
{
static int var = INVALID_VALUE;
if (var == INVALID_VALUE)
var = some_other_func();
...
}
Dans le langage C++, je peux simplement faire:
void func()
{
static int i = some_other_func();
...
}
la seule façon (que je peux penser) pour un compilateur C++ pour le résoudre correctement, est en remplaçant ce code avec un mécanisme similaire à la C exemple ci-dessus.
Mais comment le compilateur déterminerait-il une valeur "correcte" invalide? Ou y a-t-il un autre moyen que je n'ai pas pris en considération?
Merci
Précision:
INVALID_VALUE
est une valeur dont la fonction some_other_func
ne retourne jamais.
Il est utilisé pour s'assurer que cette fonction n'est jamais invoquée plus d'une fois.
Je suis un peu confus. Que représente 'INVALID_VALUE'? Et quel est le point? –
@JosephMansfield: Je pense que OP signifie que la valeur 'some_other_func' ne retourne jamais pour vérifier si' var' a reçu une valeur de retour de cette fonction. – mafso
@JosephMansfield: Une valeur que je considère invalide, et que je connais 'some_other_func' ne retournera jamais (par exemple, si c'était un pointeur, j'utiliserais normalement' NULL'). –