J'ai une question sur les #ifdef _cplusplus..

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
 
#ifdef _cplusplus
namespace std {
extern "C" {
#endif
   // 
    int printf(const char*)
   //
#ifdef _cplusplus
}
}
#endif
Tel que je le comprends, le code fonctionne comme cela:
#ifdef _cplusplus est une macro. Elle est "vraie" si le fichier est du C++ ou si l'on code en C++.
Si cette macro est vrai, le curseur passe ensuite sur namespace std;
puis sur extren "c"{
Si c'est faux, il passe directement a int printf()
Pour moi, ca permet de faire comprendre au compilo qu'il va lire du code en C alors qu'il est en C++. Quand on rentre dans le crochet ifdef _cplusplus, on a extren "C"
Il s'agit d'une redeclaration, non d'une definition

On trouve ce genre de code dans les Header ?