У меня есть код, в котором закидывающих целое структурировать указатель бросает предупреждение на НКУ (Linux)Как действует это бросить целое структурировать
typedef struct st {
int a;
char *b;
}st;
...
int handle;
int main() {
...
st *sptr = (st*)handle;
...
}
Согласно C11 спецификации
целое число может быть преобразовано в любой тип указателя. За исключением, как указано ранее, результат определен в соответствии с реализацией, может быть не правильно выровнен, может не указывать на объект ссылочного типа и может быть ловушечным представлением.
Мой вопрос: Можем ли мы наложить целое число на указатель структуры, или мы должны искать другие способы и сохранять это в качестве крайней меры?
Просьба включить фактическое предупреждение. Вероятно, предупреждение говорит, что int и указатель имеют разный размер, что важно здесь. –
Помните, что указатель в основном представляет собой целое число, которое является адресом в памяти, куда указывает указатель. То, что делает бросок, - это значение «handle» и использование этого в качестве адреса указателя для указания. Это не редкость делать на встроенных системах с фиксированными адресами памяти. –
Почему вы хотите сделать такой актерский состав? На вашей платформе 'int', вероятно, меньше указателя. Если вам абсолютно необходимо что-то подобное, используйте 'intptr_t' вместо' int'. –