Earlier quoted context omitted.
As part of "C lore", the answer is yes. In C89: int main() { func('a'); } func(c) char c; { char * s = &c; printf("%c\n", * s); } is, um, dangerous. c is an int, not a char. So on a big endian machine, s may end up pointing to the high byte. Taking the address of a parameter is dangerous, unless the widening is taken into account. This does work on a little endian machine (tried it). On a 68000, it likely doesn't pri…
And, for those who have been contemplating parameter widening: on the 68000, insert s += 3. For "portable" C89 code, declare the parameter an int (not char) -- then introduce char c2 = c and s = &c2 instead. This transformation is "safe" because parameters are copied by value and cannot be returned that way. As to debugging -- many of these systems did not have "debuggers" -- an example would be Whitesmiths C in the…
You might like zig which is shaping up to be a saner c, and Andy Kelly looks like he's staving off feature creep.