Trouver un petit compilateur C
Résolu/Fermé
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
-
8 févr. 2013 à 11:40
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 8 févr. 2013 à 18:01
heliconius Messages postés 539 Date d'inscription mardi 1 juillet 2008 Statut Membre Dernière intervention 23 juin 2023 - 8 févr. 2013 à 18:01
A voir également:
- Trouver un petit compilateur C
- Trouver adresse mac - Guide
- Trouver un lieu avec coordonnées gps - Guide
- Trouver un film sans le titre - Télécharger - Divers TV & Vidéo
- Telecharger code blocks avec compilateur - Télécharger - Langages
- Comment trouver le mot de passe wifi sur son téléphone - Guide
2 réponses
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 8/02/2013 à 12:17
Modifié par [Dal] le 8/02/2013 à 12:17
Salut heliconius,
Dans le genre petit tu as TCC de Fabrice Bellard.
https://bellard.org/tcc/
L'exécutable tcc.exe, avec le répertoire include et lib tiennent en 800 ko dans la dernière version disponible.
Avec ses options par défaut, il compile ceci :
sous la forme d'un .exe de 2 ko.
Apparemment, TCC n'est plus maintenu cependant.
Pourquoi veux tu un "petit compilateur" ?
Dal
Dans le genre petit tu as TCC de Fabrice Bellard.
https://bellard.org/tcc/
L'exécutable tcc.exe, avec le répertoire include et lib tiennent en 800 ko dans la dernière version disponible.
Avec ses options par défaut, il compile ceci :
#include <stdio.h> int main() { printf("Hello world\n"); return 0; }
sous la forme d'un .exe de 2 ko.
Apparemment, TCC n'est plus maintenu cependant.
Pourquoi veux tu un "petit compilateur" ?
Dal
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
8 févr. 2013 à 13:58
8 févr. 2013 à 13:58
Re,
Si la taille du compilateur n'est pas un critère pour toi, tu devrais plutôt installer quelque chose comme Codeblocks avec le compilateur MinGW, qui te permettra d'avoir un EDI, avec un débogueur, et qui est un environnement plus sympa si tu débutes en C que la ligne de commande et l'éditeur de texte.
www.codeblocks.org
http://www.codeblocks.org/downloads/26
choisis "codeblocks-12.11mingw-setup.exe" pour te procurer la version embarquant le compilateur MinGW.
MinGW est le portage de GCC sous Windows.
Tu peux faire du C, comme du C++, du Windows si tu veux. C'est convivial, cela marche bien et c'est maintenu :-)
Dal
Si la taille du compilateur n'est pas un critère pour toi, tu devrais plutôt installer quelque chose comme Codeblocks avec le compilateur MinGW, qui te permettra d'avoir un EDI, avec un débogueur, et qui est un environnement plus sympa si tu débutes en C que la ligne de commande et l'éditeur de texte.
www.codeblocks.org
http://www.codeblocks.org/downloads/26
choisis "codeblocks-12.11mingw-setup.exe" pour te procurer la version embarquant le compilateur MinGW.
MinGW est le portage de GCC sous Windows.
Tu peux faire du C, comme du C++, du Windows si tu veux. C'est convivial, cela marche bien et c'est maintenu :-)
Dal
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 8/02/2013 à 14:08
Modifié par [Dal] le 8/02/2013 à 14:08
Note : tu dis je n'ai pas envie de fenêtres DOS qui s'ouvriraient à cause d'une écriture sur la console
J'ai bien peur que tu doives dans ce cas faire une application Windows, car les applications "Console" vont ouvrir une console (qui s'affichera et se refermera très vite), même si elle n'affichent rien.
Ton application Windows n'a cependant pas à avoir d'interface.
Tu crées avec le wizard Codeblocks un projet "Win32 GUI project", et tu ne gardes que :
et rien d'autre (hormis les entêtes nécessaires à la compilation, bien sûr).
Une fois compilé, ton programme n'affichera rien (et ne fera rien, dans ce cas, d'ailleurs :-).
Le wizard de Codeblocks crée par défaut un projet C++.
Tu peux le changer en C en suivant les indications figurant ici : https://forums.commentcamarche.net/forum/affich-27088736-probleme-avec-l-installation-sdl-avec-le-c#1
Dal
J'ai bien peur que tu doives dans ce cas faire une application Windows, car les applications "Console" vont ouvrir une console (qui s'affichera et se refermera très vite), même si elle n'affichent rien.
Ton application Windows n'a cependant pas à avoir d'interface.
Tu crées avec le wizard Codeblocks un projet "Win32 GUI project", et tu ne gardes que :
int APIENTRY WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nShowCmd) { return 0; }
et rien d'autre (hormis les entêtes nécessaires à la compilation, bien sûr).
Une fois compilé, ton programme n'affichera rien (et ne fera rien, dans ce cas, d'ailleurs :-).
Le wizard de Codeblocks crée par défaut un projet C++.
Tu peux le changer en C en suivant les indications figurant ici : https://forums.commentcamarche.net/forum/affich-27088736-probleme-avec-l-installation-sdl-avec-le-c#1
Dal
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
140
Modifié par heliconius le 8/02/2013 à 15:16
Modifié par heliconius le 8/02/2013 à 15:16
Merci beaucoup pour tes infos. Puis-je te contacter en privé ? (je n'ai pas envie de polluer ce forum) Merci.
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
8 févr. 2013 à 15:36
8 févr. 2013 à 15:36
Le forum est là aussi pour aider les personnes rencontrant des problèmes similaires aux tiens.
Si nous échangeons en privé, cet objectif n'est pas rempli :-)
Cela dit, en principe, je ne refuse pas de répondre.
Dal
Si nous échangeons en privé, cet objectif n'est pas rempli :-)
Cela dit, en principe, je ne refuse pas de répondre.
Dal
heliconius
Messages postés
539
Date d'inscription
mardi 1 juillet 2008
Statut
Membre
Dernière intervention
23 juin 2023
140
Modifié par heliconius le 8/02/2013 à 16:41
Modifié par heliconius le 8/02/2013 à 16:41
Ben voilà:
Pour tester l'argument argv[1], si je fais
alors, je change en moins élégant, par la succession de if()
C pas facile !
NB: c'est compilé avec TCC.
Cela dit, TCC : 281 Ko ; Codeblocks que j'ai téléchargé mais pas encore installé : 98 Mo !
#include <stdio.h> #include <time.h> const char * Jour[] = {"Di", "Lu", "Ma", "Me", "Je", "Ve", "Sa"}; int main(int argc, char *argv[]) { time_t timestamp; struct tm * t; timestamp = time(NULL); t = localtime(×tamp); if(argc<2) { /* s'il n'y a pas d'argument */ printf("%s\n", "============================================"); printf("%s", "Arrêt prolongé a/c du "); printf("%s %02u/%02u/%04u %02u:%02u:%02u\n", Jour[t->tm_wday], 1+t->tm_mday, 1+t->tm_mon, 1900 + t->tm_year, t->tm_hour, t->tm_min, t->tm_sec); printf("%s\n", "============================================"); } else { if(argv[1]=="-d") { printf("%s %02u/%02u/%04u %02u:%02u:%02u ", Jour[t->tm_wday], 1+t->tm_mday, 1+t->tm_mon, 1900 + t->tm_year, t->tm_hour, t->tm_min, t->tm_sec); } if(argv[1]=="-f") { printf("- %s %02u/%02u/%04u %02u:%02u:%02u ", Jour[t->tm_wday], 1+t->tm_mday, 1+t->tm_mon, 1900 + t->tm_year, t->tm_hour, t->tm_min, t->tm_sec); } if(argv[1]=="-h") { printf("%s\n", "horodate : Enregistre Arrêt prolongé a/c du <date système>"); printf("%s\n", "horodate -d : Enregistre la <date système> de début"); printf("%s\n", "horodate -f : Enregistre la <date système> de fin"); printf("%s\n", "NB: Enregistrements dans le fichier 'usage.txt' du répertoire courant"); } } return 0; }
Pour tester l'argument argv[1], si je fais
printf("%s\n", argv[1]);ça me l'écrit en me prouvant qu'il a été pris en compte. Mais si je fais
switch(argv[1]) { case '-d' : blablabla; break; case '-f' : blablabla; break; case '-h' : blablabla; break; }ça me génère une erreur : constant expression expected
alors, je change en moins élégant, par la succession de if()
if(argc<2) { blablabla; } if(argv[1]=='-d') { blablabla; } if(argv[1]=='-f') { blablabla; } if(argv[1]=='-h') { blablabla; }ça ne génère pas d'erreur, ça m'affiche ce que je veux lorsqu'il n'y a pas d'argument (les écritures dans un fichier, on verra plus tard) mais ça ne m'affiche rien si un argument est fourni. :(
C pas facile !
NB: c'est compilé avec TCC.
Cela dit, TCC : 281 Ko ; Codeblocks que j'ai téléchargé mais pas encore installé : 98 Mo !
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
Modifié par [Dal] le 8/02/2013 à 17:29
Modifié par [Dal] le 8/02/2013 à 17:29
switch / case ne permet pas la comparaison sur des chaînes; Il faudrait comparer sur un char éventuellement.
Pour que le if fonctionne sur une comparaison de chaînes, il faut que tu fasses ... une comparaison de chaînes en C.
Cela se fait avec la fonction strcmp présente dans l'entête string.h, pas avec l'opérateur d'égalité.
Donc, tu ajoutes string.h à ton code et tu fais, par exemple :
Vois http://www.cplusplus.com/reference/cstring/strcmp/
Dal
Pour que le if fonctionne sur une comparaison de chaînes, il faut que tu fasses ... une comparaison de chaînes en C.
Cela se fait avec la fonction strcmp présente dans l'entête string.h, pas avec l'opérateur d'égalité.
Donc, tu ajoutes string.h à ton code et tu fais, par exemple :
if (strcmp(argv[1], "-d") == 0)
Vois http://www.cplusplus.com/reference/cstring/strcmp/
Dal
8 févr. 2013 à 13:12
dans un fichier "usage.txt"
Pour éteindre mon PC, une icône sur mon bureau lancerait un batch contenant :
horodate -f
shutdown
de façon à rajouter au fichier "usage.txt"
Mais comme je ne veux pas que ça me gêne lors de l'utilisation, je n'ai pas envie de fenêtres DOS qui s'ouvriraient à cause d'une écriture sur la console. Le programme irait chercher la date et heure et l'inscrirait dans un fichier. C'est tout. Il n'y a pas besoin d'un compilateur dernier cri pour bâtir des applications Windows. Juste ça. C'est la raison de l'adjectif "petit"
En tout cas merci pour ta réponse, je vais aller voir et viendrai en faire une ici.