• STATISTIQUES
  • Il y a eu un total de 0 membres et 37268 visiteurs sur le site dans les dernières 24h pour un total de 37 268 personnes!
    Membres: 2 605
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] PHPFreaks
    PHPFreaks est un site dédié à l'apprentissage et l'enseignement du PHP. Ici vous trouver...
    Programmation
    [EN] Hack This Site
    Hack This Site est considéré comme un réel terrain d'entraînement légal pour le...
    Hacking
    [FR] Kalkulators
    Ce projet a plusieurs buts, le premier étant l’étude de toutes formes cryptographiques, le cot&ea...
    Cryptographie
    [FR] Zmaster
    Articles sur l'informatique, le hacking, le P2P, les divx, les astuces windows XP, les GSM, Emule, la cryptograph...
    Hacking
    [EN] Bright Shadows
    JavaScript: 13, Exploit: 27, Crypto: 69, CrackIt: 52, Stegano: 67, Flash: 3, Programming: 16, Java-Applet: 10, Logic: 20...
    Challenges
    [FR] Comment ca marche
     Gratuit et accessible à tous, ce site de communauté permet de se dépanner, se faire aider ...
    Webmaster
    [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] tricks avec les macros
19-08-2014, 11h24
Message : #1
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
[C] tricks avec les macros
Yop,

bon, aujourd'hui je viens de découvrir un truc sympathique en C, et particulièrement avec les macros, je ne m'y étais jamais vraiment attardé, mais c'est quand même vraiment puissant comme truc.

bref, trêves de bavardages, je vous laisse avec du code :

Code C :

#define STR_NX(A) #A
#define STR(A) STR_NX(A)

#define CCAT_NX(A, B) A ## B
#define CCAT(A, B) CCAT_NX(A, B)

#include <stdio.h>

int main (void) {
  puts(STR(foo));
  puts(STR(bar));
  puts(STR("hello world"));
  puts(STR(CCAT(foo, bar)));
  return 0;
}
 


Compilez, exécutez, admirez!!

Bon, du coup, peut être que quelques explications s'imposent!

Dans la première macro le #A permet d'étendre la macro, c'est a dire qu'on va récupérer son symbole, globalement, ça permet de la transformer en string!!

Ensuite, dans 3eme macro : #define CCAT_NX(A, B) A ## B, le symbole A ## B permet tout simplement de concatener deux macros non étendues

Les deux autre macros, permettront ensuite de pouvoir utiliser les autre macros en les enchainant, comme on peut le voir dans le puts(STR(CCAT(foo, bar)));
Si on ne les définit pas, cela peut nous permettre d'afficher directement le symbole d'une macro, en faisant par exemple:

Code C :

#define foo "bar"
#define STR_NX(A) #A

#include <stdio.h>

int main (void) {
  puts(STR_NX(foo));
  return 0;
}
 


Voila, voila, si vous connaissez d'autres tricks avec les macros, n'hésitez pas ! ;)
+1 (3) -1 (0) Répondre


Messages dans ce sujet
[C] tricks avec les macros - par ark - 19-08-2014, 11h24
RE: [C] tricks avec les macros - par b0fh - 19-08-2014, 11h48
RE: [C] tricks avec les macros - par darcosion - 22-08-2014, 13h13
RE: [C] tricks avec les macros - par ark - 22-08-2014, 14h33
RE: [C] tricks avec les macros - par darcosion - 30-08-2014, 02h57
RE: [C] tricks avec les macros - par gruik - 30-08-2014, 08h52
RE: [C] tricks avec les macros - par darcosion - 21-09-2014, 14h22
RE: [C] tricks avec les macros - par supersnail - 21-09-2014, 15h46

Sujets apparemment similaires…
Sujet Auteur Réponses Affichages Dernier message
  [C TOTW 6] Xor tricks ark 7 482 06-03-2016, 23h36
Dernier message: Commodor
  [C TOTW 1] Trick avec #include ark 10 563 01-09-2014, 18h23
Dernier message: Commodor
  [NASM] Création d'un thread sous Linux uniquement avec les syscalls supersnail 2 233 04-03-2013, 23h36
Dernier message: Dobry

Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut