c++
  • c-preprocessor
  • 2009-07-22 6 views 0 likes 
    0

    Quelqu'un peut-il expliquer pourquoi l'erreur suivante se produit:Définition des macros binaire en C++

    #define bla "\xA" 
        char a [2] = {0}; 
        memcpy (a,bla,1); // a[0] = 0x0a <- Correct 
        //a[1] = bla;  // '=' : cannot convert from 'const char [2]' to 'char' 
    

    Merci,

    RM

    Répondre

    4

    Essayez:

    #define bla '\xA' 
    

    Bien que arrêtera le travail memcpy.

    +0

    Bingo. Donc, si j'utilise "" il traite crée un tableau de terminé par zéro et si je l'utilisateur '' il le traite juste comme un char droit? –

    +0

    @Roman Oui - mais notez que cela n'a rien à voir aveC#define –

    +0

    'memset()' fonctionnera, cependant. –

    5

    Les types sont différents: un [1] est un omble chevalier et « \ xA "est un tableau de char.

    En C++ et C tout ce qui est entre guillemets (y compris rien) est un tableau de char.

    +0

    Oui, mais le caractère char [1] doit-il être affecté à l'ombrage? et pourquoi est-ce un tableau char [2]? –

    +1

    Vous déclarez une chaîne qui a implicitement un caractère de fin zéro (U + 0000) à la fin, donc "x" est deux caractères: x et \ 0 – Joey

    +0

    Je pensais que \ xA est traité comme un octet simple, autrement dit bla devrait être un tableau à un octet (char)? \t Je pensais que \ xA est traité un seul octet i.e bla devrait être un tableau d'octets unique (char)? - Roman M Il y a 0 secondes [supprimer ce commentaire] –

    Questions connexes