IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Prog cpp à compiler en C


Sujet :

C

  1. #1
    Membre averti
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par défaut Prog cpp à compiler en C
    Salut!

    J'ai un prog Cpp , nommé tcp_cli.cpp, il se trouve que j'utilise pour un dev sys embarqué un compilateur C plus precisement Keil . Je dois donc compiler ce prog en C. Comment le faire? j'ai en effet vu sur le forum l'utilisation de "extern C".
    QQ1 pourrait-il me dire exactement comment je pourrais faire?
    merci d'avance

  2. #2
    Membre averti
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par défaut
    Précision:

    Mon fichier est .cpp, alors puis je changer le .cpp en .c avant de l'ajouter à mon projet?Ou devrais je faire autre chose?

  3. #3
    Rédacteur

    Avatar de ram-0000
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Mai 2007
    Messages
    11 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mai 2007
    Messages : 11 517
    Par défaut
    Si le code que tu as dans ton fichier cpp utilise des fonctionnalités CPP (classe, surcharge, templates, polymorphisme), cela ne pourra JAMAIS se compiler en C. Il faudra envisager un portage.

    Tu peux essayer de renommer de CPP vers C et compiler avec un compilateur C. Si tu as 12000 erreurs, ne t'étonne pas.
    Raymond
    Vous souhaitez participer à la rubrique Réseaux ? Contactez-moi

    Cafuro Cafuro est un outil SNMP dont le but est d'aider les administrateurs système et réseau à configurer leurs équipements SNMP réseau.
    e-verbe Un logiciel de conjugaison des verbes de la langue française.

    Ma page personnelle sur DVP
    .

  4. #4
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Par défaut
    Citation Envoyé par bentley71de Voir le message
    Salut!

    J'ai un prog Cpp , nommé tcp_cli.cpp, il se trouve que j'utilise pour un dev sys embarqué un compilateur C plus precisement Keil . Je dois donc compiler ce prog en C. Comment le faire? j'ai en effet vu sur le forum l'utilisation de "extern C".
    QQ1 pourrait-il me dire exactement comment je pourrais faire?
    merci d'avance
    Si le programme a volontairement été programmé avec un langage limité au sous-ensemble commun entre C90 et C++98, ça devrait passer. Si tel n'est pas le cas (c'est malheureusement pour toi plus que probable), le portage de l'application sera loin d'être aussi trivial que tu semble le penser.

    Tu peux essayer de trouver un compilateur C++ avec un backend C comme c'était le cas pour cfront, le compilateur C++ original de Bjarne Stroustrup. Si je ne me trompe pas, Comeau permet de générer du code C, mais c'est à confirmer, car je connais mal ce compilo.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  5. #5
    Membre averti
    Étudiant
    Inscrit en
    Mai 2008
    Messages
    29
    Détails du profil
    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2008
    Messages : 29
    Par défaut
    Voilà ce que j'ai fait:
    Je reouvert un projet en incluant mon code tel quel mais en changeant tcp_cli.cpp en tcp_cli.c, compiler sous keil C8051, j'obtiens ceci

    C51 COMPILER V8.05a - SN: Eval Version
    COPYRIGHT KEIL ELEKTRONIK GmbH 1987 - 2006
    *** WARNING C318 IN LINE 14 OF ftpclient.c: can't open file 'winsock.h'
    *** ERROR C129 IN LINE 20 OF FTPCLIENT.C: missing ';' before 'WSErrorDescription'

    C51 COMPILATION COMPLETE. 1 WARNING(S), 1 ERROR(S)
    Pourtant rien en manque, je vous pose le code en même temps.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
     
    /********************************************************/
    /* TCP echo client to be run against Silicon Laboratories ETHERNET-DK in TCP echo server mode.
     
    	compile with: cl tcp_cli.cpp wsedesc.cpp wsock32.lib
     
       Usage: tcp_cli                            ( defaults to 216.233.5.26, 7 )
              tcp_cli [dest ip addr]             ( defaults to port 7 )
              tcp_cli [dest ip addr] [dest port]
     
    	PJB, 11/20/01, 10/24/02
    */
     
    #include <stdio.h>
    #include <string.h>
    #include <winsock.h>
     
    // Function prototype
    void StreamClient(long lIP_addr, short nPort);
     
    // Helper macro for displaying errors
    LPCSTR WSErrorDescription(int);
    #define PRINTERROR(s)	\
    		fprintf(stderr,"\n%s: %s\n", s, WSErrorDescription(WSAGetLastError()))
     
    ////////////////////////////////////////////////////////////
     
    void main(int argc, char **argv)
    {
    	WORD wVersionRequested = MAKEWORD(1,1);
    	WSADATA wsaData;
    	int nRet;
    	short nPort;
     
    	//
    	// Initialize WinSock and check the version
    	//
    	nRet = WSAStartup(wVersionRequested, &wsaData);
    	if (nRet != 0 || wsaData.wVersion != wVersionRequested)
    	{	
    		fprintf(stderr,"\nError: wrong WinSock version\n");
    		return;
    	}
     
    	char ip_addr[16];
    	long lIP_addr;
    	memset(ip_addr,0,16);
     
    	/* get Port number from command line, use 7 if none given */
       if (argc == 3)
       {
          nPort = atoi(argv[2]);
          if (nPort <= 0)
          {
    		printf("Bad port number!");
    		return;
          }
       }
       else
       	nPort = 7;		// well known echo port
     
    	/* get IP address from command line, use 216.233.5.26 if none given */
    	if (argc >= 2)
    		strcpy(ip_addr,argv[1]);
    	else
    		strcpy(ip_addr,"216.233.5.26");
     
    	lIP_addr = inet_addr(ip_addr);
    	if (lIP_addr == INADDR_NONE)
    		{
    		printf("Bad IP address!");
    		return;
    		}
     
    	//
    	// Go do the stuff a stream client does
    	//
    	StreamClient(lIP_addr,nPort);
     
     
    	//
    	// Release WinSock
    	//
    	WSACleanup();
    }
     
    ////////////////////////////////////////////////////////////
     
    void StreamClient(long lIP_addr, short nPort)
    {
    	printf("\nTCP Client sending to TCP Echo Server...");
     
    	//
    	// Create a TCP/IP stream socket
    	//
    	SOCKET	theSocket;
     
    	theSocket = socket(AF_INET,				// Address family
    					   SOCK_STREAM,			// Socket type
    					   IPPROTO_TCP);		// Protocol
    	if (theSocket == INVALID_SOCKET)
    	{
    		PRINTERROR("socket()");
    		return;
    	}
     
    	//
    	// Fill in the address structure
    	//
    	SOCKADDR_IN saServer;
     
    	saServer.sin_family = AF_INET;
    	saServer.sin_addr.S_un.S_addr = lIP_addr;
    	saServer.sin_port = htons(nPort);
     
    	//
    	// connect to the server
    	//
    	int nRet;
     
    	nRet = connect(theSocket,				// Socket
    				   (LPSOCKADDR)&saServer,	// Server address
    				   sizeof(struct sockaddr));// Length of server address structure
    	if (nRet == SOCKET_ERROR)
    	{
    		PRINTERROR("socket()");
    		closesocket(theSocket);
    		return;
    	}
     
    	int nPacket = 0;
     
    	while (1)
    		{
    		//
    		// Send data to the server
    		//
    		char szBuf[1500];
     
    		nPacket++;
    		sprintf(szBuf, "This is TCP echo packet #%d.",nPacket);
    		nRet = send(theSocket,				// Connected socket
    				szBuf,					// Data buffer
    				strlen(szBuf),			// Length of data
    				0);						// Flags
    		if (nRet == SOCKET_ERROR)
    			{
    			PRINTERROR("send()");
    			break;
    			}
     
     
    		//
    		// Wait for a reply
    		//
    		nRet = recv(theSocket,				// Connected socket
    				szBuf,					// Receive buffer
    				sizeof(szBuf),			// Size of receive buffer
    				0);						// Flags
    		if (nRet == SOCKET_ERROR)
    			{
    			PRINTERROR("recv()");
    			break;
    			}
     
     
    		//
    		// Display the received data
    		//
    		printf("\nData received: %s", szBuf);
    		}
     
    	closesocket(theSocket);
    	return;
    }

  6. #6
    Expert éminent
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 395
    Par défaut
    Ce code, c'est du "C sur C++" utilisant les sockets.
    Tu dois juste déplacer les déclarations de variables en début de bloc et remplacer les includes "fautifs" par ceux qui correspondent aux sockets sur ton système embarqué...
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. [Dev-cpp] Compile error [Builder Error]
    Par Ghizlane1 dans le forum Dev-C++
    Réponses: 0
    Dernier message: 09/02/2009, 13h07
  2. [Borland CPP Compiler] Probleme avec !! Path !!
    Par kanzarih dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 20/10/2004, 23h07
  3. compiler un prog open gl
    Par bobbyf dans le forum OpenGL
    Réponses: 2
    Dernier message: 11/03/2004, 08h22
  4. compilation directx dev-cpp
    Par gaut dans le forum DirectX
    Réponses: 3
    Dernier message: 11/02/2004, 04h16
  5. [TP]Compiler un prog sans entrer dans TP7
    Par poppels dans le forum Turbo Pascal
    Réponses: 11
    Dernier message: 23/10/2002, 18h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo