Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1772 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] Compilateur plus souple que GCC pour les macros ?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Compilateur plus souple que GCC pour les macros ?

n°983535
HannibAlBu​ndy
Posté le 16-02-2005 à 14:22:07  profilanswer
 

Bonjour,
 
je cherche un compilateur qui aurait une gestion plus souple des macros.
 
Par exemple, j'aimerais qu'il prenne en compte des macros du type :
#define (a = b) fonctionEgalite(a,b)
pour remplacer les affections par une fonction.
 
J'ai beau chercher sur le net, je ne trouve pas les caractéristiques des préprocesseurs des différents compilateur :(.
 
Donc si une âme charitable voulait bien m'aider, ce serait pas de refus :D .
 
Merci d'avance :hello:

mood
Publicité
Posté le 16-02-2005 à 14:22:07  profilanswer
 

n°983538
Lam's
Profil: bas.
Posté le 16-02-2005 à 14:27:47  profilanswer
 

Aucun compilo ne t'offira ça. Il te faut donc te tourner vers des préprocesseurs génériques, et parser ton code avant de l'envoyer au compilo.
 
m4, sed, awk, etc.

n°983945
HannibAlBu​ndy
Posté le 16-02-2005 à 20:19:24  profilanswer
 

Oki :jap:.
Bon bah ... go pour les préprocesseurs génériques alors :sarcastic:.
 
Merci :hello:

n°983956
Taz
bisounours-codeur
Posté le 16-02-2005 à 20:35:55  profilanswer
 

(a = b) fonctionEgalite(a,b)  
 
c'est une blague ?

n°984095
HannibAlBu​ndy
Posté le 16-02-2005 à 22:03:51  profilanswer
 

lol, bah non, c'est loin d'être une blague :sweat: . Mais si c'était pas un minimum tordu, j'aurais pas pausé la question sur ce forum :D.
 
Il se trouve que c'est un de mes besoins, et que, bien évidemment, les préprocesseurs C "standards" ne gèrent pas ce type de parsage. Donc je me demandais s'il n'existait pas des compilateurs "exotiques" (très exotiques, je te l'accorde :p ) permettant ce genre de fumisterie.
 
En l'occurence, Lam's m'a vite orienté dans mes recherches :whistle:.

n°984103
Taz
bisounours-codeur
Posté le 16-02-2005 à 22:07:47  profilanswer
 

déjà = c'est l'affectation pas la comparaison. Et AUCUN préprocesseur ne peut t'aider, un cpp, c'est du copié-collé. Si tu tiens à ta notation = / ==, tourne toi vers un langage qui supporte la surcharge d'opérateurs. Ce que tu demandes, ça n'est pas des fumisteries, ça n'a tout simplement pas de sens.

n°984158
Kristoph
Posté le 16-02-2005 à 22:30:40  profilanswer
 

j'imagine la tête du code généré après une transformation pareille !
 

Code :
  1. int fonctionEgalite(i,0);
  2. char * fonctionEgalite(nom, "hello world" );

n°984196
el muchach​o
Comfortably Numb
Posté le 16-02-2005 à 22:55:26  profilanswer
 

La seule raison que je voie pour qu'il veuille faire ce genre de choses (en C), c'est de vouloir faire ce que font lex et yacc.

n°985233
HannibAlBu​ndy
Posté le 17-02-2005 à 18:13:26  profilanswer
 

Taz a écrit :

déjà = c'est l'affectation pas la comparaison.


J’ai jamais dis le contraire :na: . Bon d'accord j'ai écris dans mon premier post "affection" au lieu de "affectation" :pfff:, mais mon cerveau  fait plus facilement la correction "affection" --> "affectation" que "affection" --> "comparaison" :whistle:.

Taz a écrit :

Et AUCUN préprocesseur ne peut t'aider, un cpp, c'est du copié-collé. Si tu tiens à ta notation = / ==, tourne toi vers un langage qui supporte la surcharge d'opérateurs.


Je sais bien, mais le problème c'est que le langage C m'est imposé, et uniquement le C. Donc je vais pas me morfondre en me répétant incessamment "haaa si c'était du C++ ce serait tellement mieux :cry:".

Taz a écrit :

Ce que tu demandes, ça n'est pas des fumisteries, ça n'a tout simplement pas de sens.


Bah ... chacun son vocabulaire. Pour moi ça à un sens puisque c'est ce qu'il faut que j'obtienne comme résultat. Donc je préfère le qualifier de "fumisterie" ;).

Kristoph a écrit :

j'imagine la tête du code généré après une transformation pareille !
 

Code :
  1. int fonctionEgalite(i,0);
  2. char * fonctionEgalite(nom, "hello world" );



Hey oui, mais bien évidemment des contraintes de programmation sont imposées. Et pour reprendre ton exemple, il se trouve que les déclarations et les initialisations sont obligatoirement séparées. (peut-être que c'est là où voulez en venir Taz en parlant de non sens, dans la mesure ou les macros ne sont pas valides pour un langage C quelconque :sarcastic:)

el muchacho a écrit :

La seule raison que je voie pour qu'il veuille faire ce genre de choses (en C), c'est de vouloir faire ce que font lex et yacc.


Tout à fait :ange:. Donc je vais justement me rabattre sur lex & yacc, m4, ML1 ou quelque chose de ce genre :hello:

n°985281
Kristoph
Posté le 17-02-2005 à 19:09:22  profilanswer
 

Donc, on t'impose le C comme langage de programation, et toi tu demandes si tu peux utiliser un preprocesseur non standard ? Autant le faire en C++ et utiliser un compilateur C -> C++ comme ça. je rappelle que le preprocesseur fait partie intégrale du langage C et donc qu'il ne faut pas compter pouvoir en changer comme ça.

mood
Publicité
Posté le 17-02-2005 à 19:09:22  profilanswer
 

n°985312
HannibAlBu​ndy
Posté le 17-02-2005 à 19:42:43  profilanswer
 

Kristoph a écrit :

Donc, on t'impose le C comme langage de programation, et toi tu demandes si tu peux utiliser un preprocesseur non standard ? Autant le faire en C++ et utiliser un compilateur C -> C++ comme ça. je rappelle que le preprocesseur fait partie intégrale du langage C et donc qu'il ne faut pas compter pouvoir en changer comme ça.


Quand tu dis qu'il fait partie intégrante du langage C, ceci ne se justifie que par le fait que le pré processeur dépend des normes du langage C. Après, sachant qu'il y a plusieurs normes, il y a des compilateurs qui ne réagissent pas de la même façon que d'autres (du genre y a des compilos où on peut se dispenser des free). Et je me demandais si il n'existait pas de compilateur beaucoup plus laxiste que ceux qui respectent les normes ANSI ou ISO (je suis un doux rêveur je sais :D)
 
et en ce qui concerne le C++, bah ... je peux pas je peux pas quoi, c'pas ma faute :cry: (car avec la surcharge des opérateurs s'aurait été tout bidon :p )

n°985374
Kristoph
Posté le 17-02-2005 à 20:48:31  profilanswer
 

On peut toujours se dispenser des free. Ça fait juste un gros memory leak mais bon, rien de plus grave.
 
Et puis je suis désolé, on te demande de faire un truc en C et tu dis que le C++ est explicitement interdit, par contre, tu es pret à prendre la première version batarde en non standard de compilateur C qui te passe sous la main en esperant que ça va passer comme une lettre à la poste ? Faut pas réver. Si le C est tellement important, c'est qu'il faut s'en tenir au C standard et c'est tout.


Message édité par Kristoph le 17-02-2005 à 20:50:02
n°986519
HannibAlBu​ndy
Posté le 18-02-2005 à 18:42:24  profilanswer
 

lol, quand je dis qu'on peut se dispenser des free, c'est pas ne pas les écrire et avoir un code pourrit ... c'est juste que c'est le compilo qui les gère à notre place ;).
 
Et effectivement il faut s'en tenir au maximum au C standard. Donc un C restreint ne pose pas de pb ;).
 
Enfin de toute façon on va pas se prendre la tête sur ça, moi j'ai eu des réponses claire et concises de la part de Lam's et el muchacho ( :jap: ), et c'est tout ce que je voulais :whistle:.
 
Par contre je sais pas encore lequel choisir. Lex & Yacc à l'air d'être l'arme ultime, mais je n'en ai peut-être pas forcément besoin :sarcastic:.  Enfin c'est à moi de me renseigner quoi.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] Compilateur plus souple que GCC pour les macros ?

 

Sujets relatifs
Compilateur en français !!![Java 1.5] Plantage du compilateur
pointer_to_unary_function, random_shuffle & gcc 3.3[gcc] Option pour réinitialiser le path de compilation
[C] getch getchar getc et gcc 3.3.2 [Resolu]lancement du compilateur java
gcc et code assembleurOptions GCC pour compiler bibliothèque C++
erreur compilation gcc parse error at the end of inputErreur: "multiples definition" gcc
Plus de sujets relatifs à : [C] Compilateur plus souple que GCC pour les macros ?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR