Я использовал модификаторы типов (далекие, близкие, огромные) с обычными переменными, а не указатели и обнаружил, что эти модификаторы типа указателя применимы только для глобального нормального переменная, но при использовании с переменной, локальной для блока, генерируется ошибка.Использование модификаторов типа (рядом, далеко, огромно) с нормальными переменными
int near a,far b,huge c;
int main()
{
int d,e,f;
// int near a,far b,,huge c;
// long int near a,far b,huge c;
// long long int near a,far b,huge c;
//printf("\n size of a=%d ,b=%d ,c=%d ,d=%d ,e=%d ,f=%d",sizeof(a),sizeof(b),sizeof(c),sizeof(d),sizeof(e),sizeof(f));
printf("\n address of a=%u ,b=%u ,c=%u ,d=%u ,e=%u,f=%u",&a,&b,&c,&d,&e,&f);
return 0;
}
Почему это разрешено с помощью глобальной переменной, а не с локальной переменной. Кроме того, что делает переменная, наконец, становится, то есть становится указателем, целым числом с большим диапазоном или совсем другим.
Я понимаю, что их можно игнорировать, но это было сделано исключительно для исследовательских целей (запись TSR в 16-разрядной DOS: D) Я даже не мог найти что-либо в документах gcc. – NeoR
Кроме того, эти модификаторы типа были использованы для доступа к данным в сегменте данных или кода, увеличивая размер переменной указателя. – NeoR
@NeoR никогда не было версии GCC для реального режима DOS. Проект DJGPP работает в 32-битном защищенном режиме. –