C/Visual C - LIBRERIAS ANSI C

   
Vista:

LIBRERIAS ANSI C

Publicado por Sebastian (5 intervenciones) el 24/02/2008 03:14:35
Que tal a todos, bueno tengo una consulta algo "tonta", pasa que programo en C y no entiendo bien como va esto del ANSI o lo que significa, es decir se que es un estandar y todo eso pero a lo que me refiero es si un programa en C esta programado en ANSI C solo si se usan las pocas librerias que esta brinda y NADA MAS, por ejemplo.
Si mi programa utiliza una funcion de una libreria no incluida en la definicion ANSI como, process.h (que creo que no esta) por mas que funcione, deja de estar escrito en ANSI C ?
Podran pensar que es irrelevante, pero no se, tengo la paranoia de que quiero que este en ANSI C jajaja.
Otra cosa, para la funcion exit() tengo que agregar process.h por ejemplo y no solo stdio, ademas en una pagina que mostraba funciones de las librerias, la misma estaba incluida en stdlib , porque es esto ? segun el compilador que se use es donde se encuentren las funciones declaradas ? .
Yo tengo el Bc31s (Borland C 3.1 Small) conocen alguno completo en cuanto a librerias y no muy complicado en cuanto a entorno (con la pantallita azul me siento comodo).

Muchas gracias por su atencion.

Atte.
Sebastian..
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:LIBRERIAS ANSI C

Publicado por fernando.gomez (1604 intervenciones) el 24/02/2008 04:54:38
ANSI es una asociación estadunidense que significa American National Standar Institute, y su labor consiste en hacer estándares de la industria informática, en EEUU. Su contraparte europea es ECMA (European Computer Manufacturers Association), y la internacional es ISO (International Standar Organization).

Cuando C sale como lenguaje en 1970, solo existía el libro de Ritchie y Kerningham. Muy pronto comenzaron a aparecer librerías adicionales que hacían tal o cuál cosa. Entonces los compiladores implementaban algunas, pero no todas, de tal suerte que un código que compilara para el compilador X, no compilaba para el Y. Por no hablar de las diferencias entre plataformas (digamos, Unix y DOS).

De ahí que surgiera la idea de estandarizar las librerías del lenguaje para que un programa que estuviese escrito bajo este estándar (i.e. ANSI C) pudiese ser portable a cualquier compilador y bajo cualquier plataforma. De hecho, esto es cierto aún hoy día: un programa que hagas siguiendo exclusívamente las librerías y funciones del estándar (ANSI C) se puede compilar sin cambios para cualquier plataforma y compilador. De ahí la importancia del mismo.

Tristemente, el proceso de estandarización lleva mucho tiempo (el de C++ tomó diez años para ser ratificado en 1998, y otros diez años para la siguiente versión --que ya solo le falta la ratificación y estará disponible en 2009) porque se tienen que poner de acuerdo muchos involucrados. De ahí que sea, hoy día, prácticamente imposible hacer un programa solo con ANSI C. Por ejemplo, Windows provee su API (Win32) para programar sistemas gráficos como Word o el Internet Explorer, y a su vez Linux provee su kernel con funciones distintas. Entonces el hacer un programa simplemente con ANSI C y que saque provecho de las plataformas específicas es imposible.

Por cierto, que tu pregunta no es tan ociosa como piensas. De hecho es muy importante entender las diferencias entre el estándar y las extensiones de los compiladores. A cada rato alguien pregunta por qué la función "clrscr" sirve para Borland, pero no para Visual C, o por qué no existe el archivo de encabezado conio.h. La respuesta, evidentemente, es que ambos ejemplos son extensiones, y por lo tanto no se garantiza que otros compiladores las incluyan.

La función exit está definida en stdlib.h de forma estándar, y si la tienes definida en process.h, es una extensión del compilador.

Finalmente, cualquier compilador desarrollado después de 1995 incluye el estándar de C. En particular, el MinGW de GNU (www.gnu.org) es bueno. Hay varios entornos de desarrollo integrado (IDEs) por ahí que te puedes bajar para no tener que escribir código en notepad y luego compilarlo a mano. Personalmente, me gustan el DevC y el Code Blocks.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LIBRERIAS ANSI C

Publicado por Sebastian (5 intervenciones) el 24/02/2008 05:10:17
Muchas gracias por su pronta, clara y completa respuesta !

Deberian haber puesto mas librerias para el estandar jajaj por lo menos algunas de red que serian bastante utiles estandarizadas, aunque el tema de los sockets sea diferente en unix y win supongo que con la inclusion condicional de cabeceras podria darsele la bifurcacion adecuada y mas ayà de que esto lo pueda hacer un programador experimentado, no se, me siento mas seguro de saber que la hizo alguno de estos "grandes" como K o R y que la estandarizaron, seria menos preocupacion para toda la comunidad, o no?.

Saludos y nuevamente, gracias por responder.

Atte.
Sebastian.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:LIBRERIAS ANSI C

Publicado por fernando.gomez (1604 intervenciones) el 25/02/2008 03:39:16
Sí, hay muchas cosas que pudieron haber agregado al estándar. Pero la premisa (tanto para C como para C++) es que una característica debe de ser posible de tener en cualquier sistema operativo. Al momento, no todos los OSes tenían redes, de hecho era algo que apenas y se conocía. Otro ejemplo es el trabajar con multiárea. Al momento no todos los OSes tenían multiárea (como Windows 3.1). Actualmente prácticamente todos los dispositivos la tienen y por eso se va a agregar al estándar de C++ (que no el de C, es poco probable que lo modifiquen).

En cuanto a redes, la Universidad de Berkeley desarrolló los famosos sockets, y éste se convirtió en estándar de la industria, a tal grado que inclusive Windows la implementa.

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar