web-dev-qa-db-fra.com

Que signifie une fois #pragma en C?

Duplicata possible:
# pragma - aide à la compréhension

J'ai vu le pragma plusieurs fois, mais toujours confus, quelqu'un sait ce qu'il fait?

19
wireshark

Dans les langages de programmation C et C++, #pragma once est une directive de préprocesseur non standard mais largement prise en charge conçue pour que le fichier source actuel ne soit inclus qu'une seule fois dans une seule compilation. Ainsi, #pragma sert une fois le même but que les #include gardes, mais avec plusieurs avantages, notamment: moins de code, éviter les conflits de noms et améliorer la vitesse de compilation.

Voir l'article Wikipedia pour plus de détails.

26
helpermethod

Il est utilisé pour remplacer le code de préprocesseur suivant:

#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

Une bonne convention ajoute les deux pour prendre en charge les compilateurs hérités (ce qui est rare):

#pragma once
#ifndef _MYHEADER_H_
#define _MYHEADER_H_
...
#endif

Donc, si #pragma échoue une fois, l'ancienne méthode fonctionnera toujours.

15
Alex Kremer

Généralement, les directives #pragma Sont destinées à implémenter des instructions de préprocesseur spécifiques au compilateur. Ils ne sont pas standardisés, vous ne devez donc pas trop compter sur eux.

Dans ce cas, l'objectif de #pragma once Est de remplacer les gardes d'inclusion que vous utilisez dans les fichiers d'en-tête pour éviter les inclusions multiples. Il fonctionne un peu plus rapidement sur les compilateurs qui le prennent en charge, il peut donc réduire le temps de compilation sur les grands projets avec beaucoup de fichiers d'en-tête qui sont fréquemment édités #include.

3
user500944

pragma est une directive pour le préprocesseur. Il est généralement utilisé pour fournir un contrôle supplémentaire lors de la compilation. Par exemple, n'incluez pas le même code de fichier d'en-tête. Il y a beaucoup de directives différentes. La réponse dépend de ce qui suit le mot pragma.

0
danny_23