ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
19 апреля
993033 Топик полностью
йцyкeн (08.04.2020 15:55, просмотров: 675) ответил fk0 на Покажи пальцем где есть, я не в курсе. Всю жизнь упакованными были только структуры, а не указатель на int. Кроме того, невозможно же всем функциям присвоить такой атрибут. Есть, например, обычная функция, которая возвращает значение по-указателю (например, time(3)) и она ни сном, ни духом, что её аргумент могут положить в упакованную структуру.
У меня ИАР ругается: argument of type "int __packed *" is incompatible with parameter of type "int *" 
void mysscanf(const char*, const char *, int *);

int i;
__packed struct { char c; int i; } s;
char str[] = "123";

int foo()
{
  mysscanf(str, "%d", &i);   // Ok
  mysscanf(str, "%d", &s.i); // error
  return i + s.i;
}

На библиотечный sscanf, понятное дело, не ругается, поскольку он имеет прототип sscanf(const char*, const char *, ...), и ... отключает любую проверку типов.