2015-10-03 2 views
1

j'ai vu un code de fichier d'en-tête de passe-partout pour faire face à différents systèmes d'exploitation, comme ce qui suit:Différence entre #ifdef __linux et #ifdef __unix dans le fichier d'en-tête de C

#ifdef __WIN32 
    //windows 
#elif __linux 
    //linux 
#elif __unix 
    //all unix not captured above 
#endif 

Si __unix captures tous les unix pas capturés par __linux, pourquoi ne pas simplement utiliser __unix? Je suppose que c'est une sorte de sauvegarde, comme "si __linux ne suffit pas, utilisez ceci".

Cependant, il doit y avoir une raison pour laquelle les deux sont utilisés, au lieu de simplement avoir un fourre-tout avec __unix (encore une fois, cette hypothèse peut être fausse).

Quelle est la situation?

+0

La raison pour laquelle vous pouvez trouver ici [OSs] (http://sourceforge.net/p/predef/wiki/OperatingSystems/) –

+0

unix n'est pas la même chose que linux – Galik

Répondre

0

Comme indiqué dans les commentaires, Unix et Linux sont deux systèmes d'exploitation différents et bien qu'une grande quantité de logiciels soit compatible, ils ont une structure de licence distincte. Cela signifie qu'un certain nombre d'outils disponibles sous Linux ne sont pas disponibles sous Unix et vice versa. Un exemple de ceci est le système de fichiers ZFS d'Unix qui ne peut pas être distribué sous la même licence que Linux et par conséquent le support n'est pas inclus dans les noyaux Linux courants (bien qu'il soit possible de compiler un noyau personnalisé avec support). En ce qui concerne la plaque de la chaudière en particulier, il est probable qu'elle ne couvre que toutes les bases et pourrait être utilisée pour tirer parti des outils particuliers qui sont disponibles sur chaque système d'exploitation.