Me pregunto por qué no puedo compilar un ejemplo del libro. Simplifico el ejemplo aquí para evitar publicar un ejemplo de un libro con derechos de autor.
#include <stdio.h>
BYTE *data = "data";
int main()
{
printf("%s", data);
return 0;
}
Cuando compilo con g ++, obtengo un error,
error: invalid conversion from 'const char*' to 'BYTE*'
El programa funciona simplemente reemplazando BYTE con char, pero debo estar haciendo algo mal ya que el ejemplo proviene de un libro.
Por favor ayuda señalando el problema. Gracias.
CB Bailey
BYTE
no es parte del lenguaje C o la biblioteca estándar de C, por lo que depende totalmente del sistema si se define después de incluir solo el estándar stdio.h
archivo de cabecera.
En muchos sistemas que definen un BYTE
macro, a menudo es una unsigned char
. Convertir de un const char*
a una unsigned char*
requeriría un reparto explícito.
-
Sí, ahí está su respuesta idazwaika: las definiciones de tipos de datos personalizados pueden causar problemas.
– ChrisBD
20 de octubre de 2009 a las 6:36
-
También es posible que desee tener en cuenta que el estándar C permite que el compilador haga que el carácter sea un carácter con signo o sin signo, lo que puede generar algunos resultados inesperados.
– Tim Kriger
20 de octubre de 2009 a las 7:17
-
Gracias. Parece que tengo que buscar la definición de macro BYTE. ¿Hay alguna manera de obtener la salida del preprocesador C donde las macros ya están traducidas?
– idazuwaika
20 de octubre de 2009 a las 8:39
-
idazuwaika: use gcc -E (solo preprocesamiento; no compile, ensamble ni enlace)
– yalmo
20 de octubre de 2009 a las 9:27
la pregunta esta etiquetada
C
pero dices que estás usandog++
el cual es unC++
compilador. ¿Qué idioma estás usando?–CB Bailey
20 de octubre de 2009 a las 6:15
Estoy usando la parte C de C++. ¿No es C++ retrocompatible con C, así que si solo estoy usando la parte C, no importa g++ o gcc?
– idazuwaika
20 de octubre de 2009 a las 8:34
C++ no es un superconjunto de C (faltan algunas cosas). Sin embargo, no importa para esta pregunta.
– rsaxvc
18/04/2015 a las 22:33