Resulta que tengo un programita en C++, que quiero compilarlo con el Dev C++,
les incluyo las dos librerias
#include <windows.h>
#include <stdio.h>
sin embargo igual me aroja errores con la funcion printf y exit, no se por que se supone que la funcion printf esta declarada en stdio.h .me dice que hay un problema de linker.. o algo asi......??? ..help
¿Qué versión del IDE Dev-C++ usás (acordate que no es un compilador, sino que simplemente un IDE simplemente del mingw32: /Dev-Cpp/mingw32/ puedes mirar los directorios /lib y /bin para informarte un poco)?
Al menos en la versión Dev-C++ 4.9.8.0 puedes probar lo siguiente:
Herramientas/Opciones del Compilador: vas a la siguiente:
--> Generación/Optimización de Código
-->Compilador C:
Citar
--> Soportar todos los programas en C ANSI Estandar [Yes]
--> Soportar Preprocesadores Tradicionales de C [Yes]
--> Desactivar todos los Mensajes de Aviso (Warnings) [No]
Probá dejando ésas opciones de ésa forma.
Zheo escribió un texto sobre el Dev-C++ (ó Dev-Cpp) el cual está en la web de este foro o en el foro de programación general (leete la ayuda de la aplicación, siempre es útil).
Pequeño detalle:Si bien la función "printf()":
#include <stdio.h>
int printf(const char *format...);
Uso:
#include <stdio.h>
printf("Cadena de texto");
Está declarada en el fichero de cabecera stdio.h, no ocurre lo mismo con "exit()":
#include <stdlib.h>
exit();
Está declarada en stdlib.h, y en los argumentos toma diversos valores (numéricos). Ejemplo:
exit(0); // termina el programa de modo normal.
exit(1); /* termina el programa de forma anormal (se usa generalmente cuando hacés una comprobación, y ésta da NULL o cero). */
exit(3); /* termina el programa abortandolo. */
Ésta última es abort():
#include <stdlib.h>
void abort(void);
Uso:
#include <stdlib.h>
abort(); // Te imprime en la salida estándar: "abnormal program termination"
Un saludo.
PD: podrías copiar y pegar en una cita el error específico que te el compilador.
la 4.9.8.0
mas o menos estos son los errores que me arroja
[Warning] cannot find entry symbol _mainCRTStartup; defaulting to 00401000
[Linker error] undefined reference to `printf'
[Linker error] undefined reference to `exit'
[Linker error] undefined reference to `_alloca'
[Linker error] undefined reference to `__main'
[Linker error] undefined reference to `memset'
ld returned 1 exit status
C:\Documents and Settings\Multimedia10\Escritorio\Makefile.win [Build Error] [Proyecto1.exe] Error 1
Si lo estas compilando como C++ prueba:
#include <cstdlib> en lugar de #include <stdlib.h>
Suerte..
El error está en otra parte del código, lo podrías postear.
Una pregunta ¿vos entendés lo que hace el código? o ¿simplemente intentas compilarlo sin saber nada de C?
Otra cosa ¿Revisaste que el Dev-C++ soporte las aplicaciones en C ANSI Estandar y los Preprocesadores tradicionales de C?
Si los soporta, y también tiene librerías Unicode.
Es muy probable que falle alguna librería. Desinstala el compilador y volvelo a instalar, o mejor pasate al lccwin32 :P.
Saludos.
no se mucho sobre ese compilador , pero que ventajas tiene sobre Dev C++, (IDE). ?
Supongo que no es gratuito o si.?
de todos modos voy a ver que tal es ,buscando algo de informacion al respecto.
Personalmete creo q' DevCpp es de los compiladores mas practicos, lei q' usabas la version 4.9.8.0, ya salio la 4.9.9.2, supongo q' podria haber corregido posibles errores con versiones anteriores como la tuya..
Saludos..
Cita de: Slasher Keeper , y también tiene librerías Unicode.
quote]
Creo que estás confundiendo términos. ANSI es un comité de estándares.
ASCII y UNICODE son formatos de representación de caracteres.
kichan ,bBájate la última versión del Dev-C++ que, entre otras cosas, trae una nueva versión del compilador.
Citar
Conjunto de caracteres
La mayoría de funciones que usan cadenas en Windows NT/2000/XP se suministran en dos versiones: una para caracteres ANSI y otra para caracteres Unicode. Las funciones para ANSI tienen el sufijo "A", mientras que las funciones para Unicode tienen el sufijo "W". Podemos resolver este problema de dos maneras:
* Declarar el nombre de la función con un sufijo.
* Usar el parámetro CharSet en el atributo DllImport, una salida más elegante.
Veamos cómo quedan las declaraciones ahora:
[DllImport("Advapi32.dll", EntryPoint="GetUserName", CharSet=CharSet.Unicode)]
unsafe private static extern bool GetUserNameW(char * lpBuffer, int * nSize);
[DllImport("Advapi32.dll", EntryPoint="GetUserName", CharSet=CharSet.Ansi)]
unsafe private static extern bool GetUserNameA(sbyte * lpBuffer, int * nSize);
Observe que los tipos entregados varían según se use la versión para ANSI o Unicode:
* "sbyte *" en las versiones para ANSI
* "char *" en las versiones para Unicode
Fuente: MSDN Library
http://www.microsoft.com/spanish/msdn/comunidad/mtj.net/voices/art77.asp
HOLA, SOY KUNU, MI PROBLEMA ES NO ENCONTRAR EL ERROR DE
DE ESTE CODIGO,!! SE LO AGRADARECERE IFINITAMENTE,
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<ctype.h>
#include<string.h>
//Prototipo de funcion
int i,b;
void mayus(char s[])
{
for(i=0; i<strlen(s);i++)
s=toupper(s);
}
main()
{
char apa [20], ama[20],nom[20],fna[9],rfc[11];
do{
system("cls");
printf("A.PATERNO:");gets(apa);mayus(apa);
printf("A.MATERNO:");gets(ama);mayus(ama);
printf("NOMBRE(S):");gets (nom); mayus(ama);
printf("F:Nacimiento:");gets(fna);
rfc[0]=apa[0];
}
for(i=0,b=0>);
s(1)=toupper
switch(apa)
case 'A':b1=;break
case 'E':b1=;break
case 'I':b1=;break
case 'O':b1=;break
case 'U':b1=;break
default:rfc[1]='U'; b=1: break;
default:rfc[1]=apa[1];
}
// LLAMADO
rfc[2]=ama(0);
rfc[3]=num(0);
rfc[4]=fna(6);
rfc[5]=fna(7);
rfc[6]=fna(3);
rfc[7]=fna(4);
rfc[8]=fna(0);
rfc[9]=fna(1);
rfc[10]=\'
system("cls");
printf(%s%s%s\n",nom,apa,ama");
getch();
}