<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div>On May 23, 2011, at 12:43 AM, Wenhan Gu wrote:</div><blockquote type="cite">Thanks for your answer very much.<div><br></div><div>I wonder for what reason does ARM use <b>void *</b> but X86 use <b>char *</b> ?</div><div>Seems ARM uses void * since its spec said that.</div><div>But X86? I cannot find any reason or spec to specify why X86 uses char *, not void * directly?</div></blockquote><div><br></div>It's just what GCC specifies.  void* was introduced by C89, and GCC</div><div>predates that, so it's likely that it's still char* for really, really historical</div><div>reasons.  At this point it can't be changed.</div><div><br></div><div>It's not specified by Intel or anything, so it's quite possible that there</div><div>are other x86 implementations (that don't strive for ABI compatibility</div><div>with GCC) that uses a different type.  For example, I don't know for</div><div>certain whether anyone's verified that MSVC uses char* for va_list.</div><div><br></div><div>John.</div></body></html>