SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: @aps en Miércoles 26 de Junio de 2013, 06:17

Título: ¿Qué es el estándar en C?
Publicado por: @aps en Miércoles 26 de Junio de 2013, 06:17
Parece tonta la pregunta pero no lo tengo claro, ¿qué se considera compilar un código por medio del estándar? ¿que el código sólamente incluya las librerías que se encuentran aquí (http://es.wikipedia.org/wiki/Biblioteca_est%C3%A1ndar_de_C#Archivos_de_cabeceras_de_la_biblioteca_ANSI_C)? ¿cómo sé cuándo compilo rigiéndome por el estandar? ¿cuando le agrego al compilador la opción -ansi?

y otra duda aparte, cuando escribo un código sin incluir ninguna libería, ¿por qué compila? ¿por la rtl? y si es así, ¿cómo sé cuáles funciones tiene la rtl y cuáles no? uso mingw en windows.

ah! también, ¿es posible tener un ejecutable q no cargue kernel32 ni ntdll ?

Gracias.

saludos.
Título: Re:¿Qué es el estándar en C?
Publicado por: ProfesorX en Miércoles 26 de Junio de 2013, 19:11
Buenas @aps bienvenido al foro.

¿qué se considera compilar un código por medio del estándar? ¿que el código sólamente incluya las librerías que se encuentran aquí (http://es.wikipedia.org/wiki/Biblioteca_est%C3%A1ndar_de_C#Archivos_de_cabeceras_de_la_biblioteca_ANSI_C)?
R.- Si
Citar
¿cómo sé cuándo compilo rigiéndome por el estandar? ¿cuando le agrego al compilador la opción -ansi?
R.- En realidad usar la opcion -ansi solo garantiza que estas usando el estandar c90, en caso de que escribas codigo para compiladores antiguos. Mas infromacion sobre -ansi aqui:
http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options (http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options)

Citar
y otra duda aparte, cuando escribo un código sin incluir ninguna libería, ¿por qué compila? ¿por la rtl? y si es así, ¿cómo sé cuáles funciones tiene la rtl y cuáles no?
R.- Esta pregunta no la comprendi bien, cual seria el codigo que dices que compilas sin ninguna libreria?

Citar
ah! también, ¿es posible tener un ejecutable q no cargue kernel32 ni ntdll ?
En windows, no, porque esas dll, comtinenen las funciones de acceso a bajo nivel de windows.

Saludos :)
Título: Re:¿Qué es el estándar en C?
Publicado por: @aps en Jueves 27 de Junio de 2013, 00:47
Cuando compilo usando la opción -ansi este código funciona d lo más normal:
Código: C
  1. #define PI 3.14
  2.  
  3. int main (void)
  4. {
  5.         printf("hi, %f\r\n", PI);
  6.         getch();
  7.         return 0;
  8. }

Como getch no forma parte del estándar ni del c90 ni del c99 no entiendo porqué compila.
Quizá pueda llegar a entender lo d printf pues creo q está en la rtl, pero ¿getch? además, si se diera el caso d q fuera así, ¿cómo puedo estar seguro de cuáles funciones están en la rtl q cargó mi programa?

Al lo d arriba funcionar cuando no debería me pregunto, ¿cómo sé cuándo mi compilador compila por el estándar?

Gracias por responder,

saludos.
Título: Re:¿Qué es el estándar en C?
Publicado por: su - en Miércoles 3 de Julio de 2013, 23:52
Cuando compilo usando la opción -ansi este código funciona d lo más normal:
Código: C
  1. #define PI 3.14
  2.  
  3. int main (void)
  4. {
  5.         printf("hi, %f\r\n", PI);
  6.         getch();
  7.         return 0;
  8. }

Como getch no forma parte del estándar ni del c90 ni del c99 no entiendo porqué compila.
Quizá pueda llegar a entender lo d printf pues creo q está en la rtl, pero ¿getch? además, si se diera el caso d q fuera así, ¿cómo puedo estar seguro de cuáles funciones están en la rtl q cargó mi programa?

Al lo d arriba funcionar cuando no debería me pregunto, ¿cómo sé cuándo mi compilador compila por el estándar?

Gracias por responder,

saludos.

Un poco tarde, pero mas vale tarde que nunca :p

El codigo que pones ahi realmente no esta completo. Le falta el #include <stdio.h> (https://en.wikipedia.org/wiki/Stdio.h) que una libreria estandar y define las funciones printf, getchar entre otras.

Ahora getch no es estandar, por lo que me hace pensar que estas usando un IDE que hace muchas cosas sin preguntar.