Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00021 #include <stdio.h>
00022 #include <string.h>
00023
00025 enum Endian {
00026 ENDIAN_LITTLE,
00027 ENDIAN_BIG
00028 };
00029
00034 static inline void printf_endian(Endian endian)
00035 {
00036 printf("#define TTD_ENDIAN %s\n", endian == ENDIAN_LITTLE ? "TTD_LITTLE_ENDIAN" : "TTD_BIG_ENDIAN");
00037 }
00038
00045 int main (int argc, char *argv[])
00046 {
00047 unsigned char endian_test[2] = { 1, 0 };
00048 int force_BE = 0, force_LE = 0, force_PREPROCESSOR = 0;
00049
00050 if (argc > 1 && strcmp(argv[1], "BE") == 0) force_BE = 1;
00051 if (argc > 1 && strcmp(argv[1], "LE") == 0) force_LE = 1;
00052 if (argc > 1 && strcmp(argv[1], "PREPROCESSOR") == 0) force_PREPROCESSOR = 1;
00053
00054 printf("#ifndef ENDIAN_H\n#define ENDIAN_H\n");
00055
00056 if (force_LE == 1) {
00057 printf_endian(ENDIAN_LITTLE);
00058 } else if (force_BE == 1) {
00059 printf_endian(ENDIAN_BIG);
00060 } else if (force_PREPROCESSOR == 1) {
00061
00062
00063
00064
00065 printf("#ifdef __BIG_ENDIAN__\n");
00066 printf_endian(ENDIAN_BIG);
00067 printf("#else\n");
00068 printf_endian(ENDIAN_LITTLE);
00069 printf("#endif\n");
00070 } else if (*(short*)endian_test == 1 ) {
00071 printf_endian(ENDIAN_LITTLE);
00072 } else {
00073 printf_endian(ENDIAN_BIG);
00074 }
00075 printf("#endif\n");
00076
00077 return 0;
00078 }