*(test_Data_ts*)(&test_Data_s[0])
является первым элементом таблицы test_Data_s и имеет тип test_Data_ts
В первом распределении типы являются исправленными.
(*(test_Data_ts*)(&test_Data_s[0])) = *(test_Data_ts*)0x00; //do not execute
, но вы пытаетесь разыменоватьпустой указатель.
(*(test_Data_ts*)(&test_Data_s[0])) = (test_Data_ts)0; //**Error -> conversion to non-scalar type requested
Это не работает, потому что вы просите компилятор преобразовать скалярный тип (0 - int
) в struct
.
(*(test_Data_ts*)(&test_Data_s[0])) = 0;//**Error -> incompatible types when assigning
//to type 'test_Data_ts' from type 'int
Вы не запрашиваете преобразование, как в предыдущей строке, но компилятор сообщает вам, что типы с обеих сторон назначения не совместимы.Один - это int
(0), а другой - struct
.