IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Compatibilité ANSI [FAQ]


Sujet :

C

  1. #21
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oodini
    Mais si le compilateur C++ utilise ces décorations sur des fichiers C, le linker devrait pouvoir correctement les exploiter.
    Ben non, parce que la bibliothèque C et les modules C sont compilés en C.
    Je comprendrais mieux ton explication si on utilisait un compilateur C++, et un éditeur de lien C... ?
    Mamma mia! Un éditeur de lien est indépendant du langage. Il relie des objets compilés (code machine avec des listes d'étiquettes non résolues) pour en faire un fichier 'code machine' unique.
    Au fait, comment aurais-je pu trouver cette information par moi-même ? J'ai cru écluser Google, et je ne tombais que sur des docs avec des macro "bateaux"...
    Hum, ça fait 6 ans que je fréquente La Source, à savoir news:comp.lang.c plus quelques autres forums... Ce genre d'info ne tombe pas du ciel...

  2. #22
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par DaZumba
    Citation Envoyé par Emmanuel Delahaye
    Bzzt. 'implementation-dependent'.
    Oui. Mais si C et C++ ont des conventions differentes au sujet de l'ordre des arguments sur la pile, alors extern "C" forcera la convention C. extern "C" ne concerne pas que la decoration (qui est compiler-dependent, elle...). M'enfin, on parle de C++, la...
    C'est de la touille interne. Mais pour que ça marche, il y a intérêt à ne pas mélanger les compilateurs (suite C/C++/Linker tout GCC ou tout Borland ou tout Microsoft, mais pas de mélange... Eviter aussi les écarts de versions trop importants (genre 16-bit d'un coté, 32-bit de l'autre...)

    C'est pour ça qu'il existe des bibliothèques 'pour GCC', 'pour VC++6', pour 'Borland C' etc. Sinon, on récupère les sources et on recompile pour la suite qui va bien.

  3. #23
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Citation Envoyé par Emmanuel Delahaye
    Citation Envoyé par oodini
    Mais si le compilateur C++ utilise ces décorations sur des fichiers C, le linker devrait pouvoir correctement les exploiter.
    Ben non, parce que la bibliothèque C et le modules C sont compilés en C.
    OK, je comprend mieux où se situe l'hétérogènéité.

    Mais vos explications concernaient les fonctions, ou autres entités.
    Or, c'est ici utilisé avec EXTERN, qui n'est pas une entité (ou un objet, comme on dirait en C++), mais une "portée".

    Je suis donc un peu perplexe. Et pourquoi ces précautions de compilations ne sont-elles prises que sur "extern" ?

    Hum, ça fait 6 ans que je fréquente La Source, à savoir news:comp.lang.c plus quelques autres forums... Ce genre d'info ne tombe pas du ciel...
    Tu devrais mettre ce truc dans ta FAQ. car j'ai souvent trouvé ce bout de code sur Google, sans qu'il n'y ai jamais eu d'explications.
    En tout cas, ton site a atterri directement dans mes signets. :-)

  4. #24
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par oodini
    Mais vos explications concernaient les fonctions, ou autres entités.
    Or, c'est ici utilisé avec EXTERN, qui n'est pas une entité (ou un objet, comme on dirait en C++), mais une "portée".

    Je suis donc un peu perplexe. Et pourquoi ces précautions de compilations ne sont-elles prises que sur "extern" ?
    Ca s'utilise comme ça :

    EXTERN <declaration d'objet>;
    ou
    EXTERN <prototype de fonction>;

    dans un header. Personnellement, je fais autrement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    Par exemple : 
     
    #ifndef H_ED_HEADER_20050928172540
    #define H_ED_HEADER_20050928172540
     
    #ifdef __cplusplus
    extern "C"
    {
    #endif
     
    /* header.h */
     
    #ifdef __cplusplus
    }
    #endif
     
    #endif /* guard */
     
    /* Guards added by GUARD (c) ED 2000-2005 Feb 07 2005 Ver. 1.7 */
    je trouve ça plus simple, d'autant plus que chez moi, ce genre de code est généré automatiquement.

    de plus, je vois mal un header mélangeant du C et du C++. Celui-ci est 'pur-C, mais il peut être inclus dans un source C++ sans broncher.
    Tu devrais mettre ce truc dans ta FAQ. car j'ai souvent trouvé ce bout de code sur Google, sans qu'il n'y ai jamais eu d'explications.
    Aie... Mise à jour de la TODO list...

  5. #25
    Membre averti
    Profil pro
    Software Engineer
    Inscrit en
    Janvier 2006
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Software Engineer

    Informations forums :
    Inscription : Janvier 2006
    Messages : 27
    Par défaut
    Bonjour à tous,

    J'ai besoin d'afficher des de l'arabe en utilisant le codage ISO. Je programme en C/C++.
    SVP est-ce que qlq'un peut m'aider.
    Merci d'avance

  6. #26
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par sovop
    J'ai besoin d'afficher des de l'arabe en utilisant le codage ISO. Je programme en C/C++.
    SVP est-ce que qlq'un peut m'aider.
    Rapport avec le sujet en cours ?

    Tu aurais du créer un nouveau sujet au lieu de déterrer un vieux sujet comme ça qui n'a rien à voir...

    Pour ta question, il faut sans doute que ton système dispose des fonts adéquates et que coté C, tu utlises les caractères larges (wchar_t) qui supportent Unicode et donc toutes les fonctions 'w', le préfixe L pour les chaines etc.

    J'avoue ne pas en savoir beaucoup plus...

  7. #27
    Membre averti
    Inscrit en
    Mars 2006
    Messages
    62
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 62
    Par défaut
    Citation Envoyé par sovop
    Bonjour à tous,

    J'ai besoin d'afficher des de l'arabe en utilisant le codage ISO. Je programme en C/C++.
    SVP est-ce que qlq'un peut m'aider.
    Merci d'avance
    Un très bon topic, j'ai appris des choses, j'aurai jamais lu, si tu l'as pas déterré..

    Pour ta question, tu dois déjà arriver à entrer les caractères arabes dans un programme tel notepad (bloc note), sinon impossible
    Pour ce faire rendez-vous paneau de configuration, puis options linguistique et régionale et installe le clavier arabe (tu dois être muni du CD de windows)

    PS: veuille tjrs à créer un nouveau post pour poser ta question, tu pollue l'atmosphère ici man

  8. #28
    Membre émérite Avatar de MatRem
    Profil pro
    Inscrit en
    Décembre 2002
    Messages
    750
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2002
    Messages : 750
    Par défaut
    Un très bon topic, j'ai appris des choses, j'aurai jamais lu, si tu l'as pas déterré..
    ++

Discussions similaires

  1. help!! problème de compatibilité ascendante
    Par valfredr dans le forum XMLRAD
    Réponses: 5
    Dernier message: 16/06/2003, 16h15
  2. [7RC3] Compatibilité avec les anciennes versions ...
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 3
    Dernier message: 15/05/2003, 16h46
  3. Programmation ANSI C++ ou Borland C++ ?
    Par scarabee dans le forum C++Builder
    Réponses: 5
    Dernier message: 04/11/2002, 19h00
  4. Compatibilité Visibroker 4.5 C++ Builder
    Par manuel dans le forum CORBA
    Réponses: 4
    Dernier message: 15/07/2002, 21h57
  5. compatibilité des librairies directX8
    Par Freakazoid dans le forum DirectX
    Réponses: 3
    Dernier message: 23/05/2002, 21h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo