Vous n'êtes pas identifié(e).
Comme décris dans la source, je partage ce code afin d'aider les développeurs en C à rendre leur code portable sous Windows et GNU/Linux.
Pour les macros en C et C++, voir ici : http://linuxtrack.net/viewtopic.php?id=752
[==C++==]
/*
Hybrid.c by WarLocG(C). Octobre 2014.
Licence: aucune, cette source sert d'aide et peut egalement servir de tutoriel
pour developper des programmes portables en C pour Windows et GNU/Linux.
Objectif: - fournir un échantillon de code hybride tournant aussi bien
sous GNU/Linux que sur Win32. Avec fonctions outils a la cle.
N'étant pas utilisateur des produits Apple, ni BSD, il ne sera pas prévu d'implementer
de '#if defined' pour ces systemes dans la source, vous pouvez cependant l'implementer
si vous en ressentez le besoin.
Tests effectues sous:
* GCC sous GNU/Linux : [OK]
* DevCPP sous Win32 (XP): [OK]
A tester:
* Cygwin sous Win32/NT
* CodeBlock sous Win et GNU/Linux
A corriger:
* system() semble avoir des soucis sous Borland C++ 5, a patcher.
PS: vu l'ancienneté du compilateur, ce n'est pas urgent.
Outils:
* clrScr() : effacer l ecran
* pause() : marquer une pause
* getString() : scanf() avec court-circuit pour Win inclus.
PS: renvoit un char*. Pour les entiers, flottants et autres types, il necessite un cast.
*/
#include <stdio.h>
#include <stdlib.h> /* system() *a utiliser avec precaution!!!* */
#if defined (__WIN32) || (__NT__)
# include <conio.h> /* getch() */
# include <windows.h>
#endif
#define BUFFER 255 /* taille du buffer pour getString() */
/* receptionner les frappes clavier */
/* retour ligne linux = CR : 0x0A (10) */
/* retour ligne windows = CR + LF : 0x0A (10) + 0x0D (13) */
char string[BUFFER]=""; /* la variable (globale) */
char* getString()
{
scanf("%s",string); /* 'string' etant deja une adresse, pas besoin de & */
#if defined (__WIN32) || (__NT__)
getchar(); /* *court-circuit* recupere le caractere LF sous Windows */
#endif
return string;
}
/* nettoyer l'ecran */
/* nom inspire de la fonction en pascal/delphi pour effacer l ecran */
void clrScr()
{
#if defined (__WIN32) || (__NT__)
system("cls");
#elif defined (__linux__) || (__LINUX__) || (__unix__)
system("clear");
#endif
}
/* marquer une pause */
void pause()
{
#if defined (__WIN32) || (__NT__)
system("pause");
#elif defined (__linux__) || (__LINUX__) || (__unix__)
system("echo \"Appuyez sur une touche pour continuer...\" && read a");
#endif
}
/* devient la fonction principale */
void core()
{
/* inserer les instructions a la suite... */
/* debut instructions */
unsigned char i; /* 0...255 */
/* test de la fonction de nettoyage de l'ecran */
puts("hdsjkhgjdhjk\nhhgjq\ndjgjqsgj\njhgf");
clrScr();
/* simple hello */
printf("%s","Hello le monde.\n");
/* test de la fonction de pause */
for (i=0;i<10;i++)
{
printf("%hd\n",i);
if (i==5) pause();
}
/* test de la fonction getString */
puts("test de la fonction getString()");
printf("Vous avez entre : %s\n",getString());
/* fin instructions */
}
#if defined (_WIN32) || (__NT__)
/* code pour API WIN32 ici */
void main(int argc, char* argv[])
{
core();
getch(); /* cliquer sur une touche pour sortir de la console. */
}
#elif defined (__linux__) \
|| defined (__LINUX__) \
|| defined (__unix__) \
|| defined (__CYGWIN__)
/* code pour API POSIX ici */
int main(int argc, char* argv[])
{
core();
return 0;
}
#endif
Hors ligne