2009-12-23 12 views
1

Je viens de réaliser que je suis censé inclure le #include<cstdlib> requis par abs() pour la fonction abs().Le code C++ s'exécute avec l'en-tête manquant, pourquoi?

#include<iostream> 
    using namespace std; 
    int main() 
    { 
     int result; 
     result = abs(-10); 
     cout << result << "\n"; 
     return 0; 

    } 

Pourquoi ce code fonctionne toujours, même si j'oublié l'en-tête importante (#include<cstdlib>)?

+1

Quelle est votre plate-forme, compilateur? –

+0

Win7Prof Visual C++ 2008 Express Edition – Newb

+0

Je suppose que cela dépend du compilateur aussi .. BTW: bonne question +1 –

Répondre

8

En effet, iostream inclut indirectement la définition de abs(). Il est autorisé par le standard, mais ne doit pas être utilisé, car il dépend de l'implémentation (c'est-à-dire que votre code peut ne pas compiler sur d'autres compilateurs).

+2

En d'autres termes, il suffit d'inclure #include pour éviter les problèmes dans le futur, merci atzz. – Newb