elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  [ANSI C] Split(), strlen(), mid(), Instr(), strcpy().
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: 1 [2] Ir Abajo Respuesta Imprimir
Autor Tema: [ANSI C] Split(), strlen(), mid(), Instr(), strcpy().  (Leído 10,254 veces)
08l00D

Desconectado Desconectado

Mensajes: 168


Ver Perfil
Re: [ANSI C] Split(), strlen(), mid(), Instr(), strcpy().
« Respuesta #10 en: 14 Enero 2011, 01:03 am »

No, en C++ bool es un tipo de dato primitivo aparte. En C, desde C99 como bien decís, se define mediante macros en stdbool.h, pero es al día de hoy que se sigue definiendo aparte no solo por retrocompatibilidad, también por claridad de código.
_Bool como puse arriba es una palabra reservada por tanto nuevo tipo... y te podes dar cuenta por 2 cosas no se necesita incluir ningun archivo de cabecera (que tenga un typedef, definicion de constante, enumeracion, etc) para poder declarar variables con _Bool y la otra es que las palabras reservadas(luego del estandar) suelen llevar como primer caracter el guion bajo.. al igual que _Complex _Imaginary .. tambien introducidos en C99...
bool en stdbool.h si es una macro... no dije que no lo fuera


No esta establecido que sea una mala practica no utilizar NULL. Es simplemente una cuestión de estilo que se suele aplicar mas que nada en código critico donde se requiera dejar bien en claro que se esta tratando con punteros, pero no mas que eso.

Saludos
Si tenes razon, lo dije sin ser demasiado objetivo... en lo personal no me gusta dejar al compilador que haga ese tipo de conversiones (de constantes a punteros) por que hay situaciones en donde el compilador no es capaz de realizar la conversion...
por ejemplo.. en el paso de un argumento a una funcion que espera un puntero, si la funcion no tiene prototipo el cual no es obligatorio en C, se le esta pasando un int ... en vez de (void *)(0) ...
ademas para mi le da mas legibilidad al codigo...es lo mismo que lo de true o false.. gustos personales


En línea

Littlehorse
All the world's a stage
Moderador
***
Desconectado Desconectado

Mensajes: 2.714


Nie Dam Sie


Ver Perfil WWW
Re: [ANSI C] Split(), strlen(), mid(), Instr(), strcpy().
« Respuesta #11 en: 14 Enero 2011, 02:35 am »

Citar
_Bool como puse arriba es una palabra reservada por tanto nuevo tipo... y te podes dar cuenta por 2 cosas no se necesita incluir ningun archivo de cabecera (que tenga un typedef, definicion de constante, enumeracion, etc) para poder declarar variables con _Bool

Que sea una palabra reservada no implica que sea un nuevo tipo, "for" es una palabra reservada y hasta donde se no es un tipo de dato  ;D.
En todo caso si es como decís, realmente dudo mucho que no haya un typedef, pero ya mirare cuando haya tiempo. Igualmente por ahora te tomo la palabra ya que para comprobarlo tendría que instalar GCC y no puedo en este momento. En Vs el soporte a C99 es menor y en C++ _Bool no es mas que un typedef de bool.

Citar
en lo personal no me gusta dejar al compilador que haga ese tipo de conversiones (de constantes a punteros) por que hay situaciones en donde el compilador no es capaz de realizar la conversion...

Intenta buscar 3 ejemplos en el que el compilador no sea capaz de realizar la conversión de 0 a NULL y veras que en ninguno el problema radica exclusivamente en utilizar o no utilizar NULL.

Un ejemplo claro es el que expones:

Citar
en el paso de un argumento a una funcion que espera un puntero, si la funcion no tiene prototipo el cual no es obligatorio en C, se le esta pasando un int ... en vez de (void *)(0) ...

Si no tenes un prototipo de función declarado partís de un error inicial. Usar o no usar NULL es secundario ya que ese no es exclusivamente el problema, el problema radica en la traba que le pones al compilador.

Código
  1. int main()
  2. {
  3.  
  4. func(); //Ups me olvide de pasarle parametros. Es que no habia prototipo ;D
  5.  
  6. return 0;
  7. }
  8.  
  9. int func(char *ptr)
  10. {
  11.  
  12. if(ptr)
  13. {
  14. printf("No es NULL"); //...
  15. *ptr='a'; //Crash
  16. }
  17. else
  18. printf("NULL");
  19. }

Y este es solo uno de mil ejemplos que no tienen nada que ver con usar o no usar NULL.

Saludos!


En línea

An expert is a man who has made all the mistakes which can be made, in a very narrow field.
Páginas: 1 [2] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con funcion strcpy().
Programación C/C++
dark-heimdall 1 4,986 Último mensaje 19 Febrero 2011, 06:36 am
por dark-heimdall
Duda con strlen [Solucionado]
Programación C/C++
Dark00 9 5,753 Último mensaje 11 Noviembre 2012, 19:17 pm
por Dark00
[FASM]strlen en ASM
ASM
0xDani 7 5,918 Último mensaje 28 Diciembre 2012, 14:30 pm
por avesudra
[Micro-rutina] strlen - ANSI « 1 2 »
ASM
Karcrack 13 8,038 Último mensaje 4 Abril 2013, 02:14 am
por mr.blood
Crear mis propias funciones que hagan de: strcpy, strlen, strcmp, strcat
Programación C/C++
galapok11 2 3,290 Último mensaje 12 Agosto 2016, 17:13 pm
por Yoel Alejandro
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines