diff --git a/mpers.awk b/mpers.awk index 6545052d..9f8cb648 100644 --- a/mpers.awk +++ b/mpers.awk @@ -234,8 +234,12 @@ END { PROCINFO["sorted_in"] = "compare_indices" for (item in array) { if (array[item]["special"] == "pointer_type") { - print "typedef uint" \ - 8 * array_get(item, "byte_size") "_t mpers_ptr_t;" + mpers_ptr_t = \ + "uint" 8 * array_get(item, "byte_size") "_t" + print "#ifndef mpers_ptr_t_is_" mpers_ptr_t + print "typedef " mpers_ptr_t " mpers_ptr_t;" + print "#define mpers_ptr_t_is_" mpers_ptr_t + print "#endif" break } } diff --git a/mpers_test.sh b/mpers_test.sh index 9b8805da..f0799e62 100755 --- a/mpers_test.sh +++ b/mpers_test.sh @@ -81,9 +81,13 @@ typedef struct { EOF expected="$mpers_dir/sample.expected" +mpers_ptr_t="uint${size}_t" cat > "$expected" < -typedef uint${size}_t mpers_ptr_t; +#ifndef mpers_ptr_t_is_${mpers_ptr_t} +typedef ${mpers_ptr_t} mpers_ptr_t; +#define mpers_ptr_t_is_${mpers_ptr_t} +#endif typedef struct { struct {