А есть ли какие-нибудь отличия в поведении C и C++ при кастовании char* в void* и обратно?
А то я тут пишу плюсявый плагин к сявой софтине: из неё вызывается мой плюсявый callback f()
:
extern "C" void f() {
static const char msg[] = "xxx";
g(msg, sizeof(msg) - 1);
}
void g(const char* data, size_t size) {
сявая_структура x;
x.data = data;
x.size = size;
сявый_вызов(x);
}
Если я уберу const
с объявления msg
внутри f()
, и объявлю параметр data
функции g()
как const void*
, а внутри напишу x.data = (char*)data
, то всё сегфолтится. Почему?