/* * demo_versions/malloc_no_cast.c * -------------------------------------------------------------------------- * 演示:void* 隐式转换差异 —— C 合法,C++ 必须显式转换。 * * 来源:wiki 块 [58954439:15]:C 中 `char* p = malloc(n);` 合法(void* 隐式转任意指针), * C++ 中 void* 不能隐式转其它指针,必须 `char* p = (char*)malloc(n);`。 * * 验证: * gcc -std=c17 → PASS(void* 隐式转换合法) * g++ -std=c++17 → ERROR (invalid conversion from void* to char*) * * 运行: * tools/std_probe.py --lang c --file tools/demo_versions/malloc_no_cast.c * tools/std_probe.py --lang c++ --file tools/demo_versions/malloc_no_cast.c * -------------------------------------------------------------------------- */ #include int main(void) { char* p = malloc(16); /* C 合法;C++ 报 invalid conversion from void* to char* */ if (p) free(p); return 0; }