tags:

views:

456

answers:

1

I am wondering why I can't compile an example from book. I simplify the example here to avoid posting example from a copyrighted book.

#include <stdio.h>

BYTE *data = "data";

int main()
{
     printf("%s", data);
     return 0;
}

When compile with g++, i get error,

error: invalid conversion from 'const char*' to 'BYTE*'

The program works by simply replacing BYTE with char, but I must be doing something wrong since the example comes from a book.

Please help pointing out the problem. Thanks.

+12  A: 

BYTE isn't a part of the C language or C standard library so it is totally system dependent on whether it is defined after including just the standard stdio.h header file.

On many systems that do define a BYTE macro, it is often an unsigned char. Converting from a const char* to an unsigned char* would require an explicit cast.

Charles Bailey
Yep - there's your answer idazwaika - custom datatype definitions can cause trouble.
ChrisBD
You may also want to note that the C standard allows the compiler to make char to be either signed char or unsigned char which can lead to some unexpected results.
Tim Kryger
Thanks. Looks like I have to hunt for the definition of BYTE macro. Is there a way I can get the output of C pre-processor where macros are translated already?
idazuwaika
idazuwaika: Use gcc -E (Preprocess only; do not compile, assemble or link)
eyalm