> const void *を要求してるのに
> const char *を渡したら
> そりゃあ警告でる

えー、逆でしょー? そのための「void *」なんだから。

const char *を要求してるのに
const void *を渡したら
警告でるのも無理ないと思うけど。

そうじゃなかったら、何のための void *?