QUOTE (scifi @ Oct 12 2015, 00:34)

Дык ради чего весь сыр-бор? Прочитать volatile-переменную. Вот просто не читали (если заглянуть в ассемблерный листинг).
Я вот ни разу с 80x годов таких "компиляторов" не встречал, хотя, конечно, в те годы компиляторы багами изобиловали

. Ну и кроме всего прочего, как видно из приведенного выше примера, если вдруг компилятор решил не читать переменную, то заставить его "простыми" и "понятными" методами не получится в принципе. Ну разве только отключение оптимизации начисто, да и то это не надежно. Остается только считывание в другую глобальную volatile переменную. Что есть извращение.
Но на самом деле все работает, как предписано и без всяких уродливых мер.
QUOTE (den_po @ Oct 12 2015, 00:48)

Что я писал здесь, и с чем вы спорили, это что int function(); и int function(void); в сях - разные вещи, и что первый вариант позволяет передать функции любое число аргументов. Вы сами это позже подтвердили, так в чём же моя глупость?
Утомили, глупость в том, что function(); это ВООБЩЕ НЕ СИ. И в достандартные времена в неуоторых НЕ стандартных реализациях позволял так через ануc ОТКЛЮЧАТЬ контроль за аргуметами вообше, но никак НЕ передавать любое количество аргуметов. В Си вообше нельзя передать "любое" функции с переменным числом аргументов, ибо есть совершенно обьективное ограничение - минимум один должен быть.
QUOTE
Если бы её подтягивали из C++, она бы и работала как в C++ - означала бы, что функция не принимает аргументов. Нет?
Подтягивали наличие прототипов, а не делали из Си С++, но в том-то и дело, что до введения стандарта, делали это как попало.
QUOTE
Это если включить "require prototypes".
Да? А если ВЫКЛЮЧЕНО, то как тогда быть с СОБЛЮДЕНИМ Стандарта требующего наличие прототипов?
Это не говоря уже том, что СУТЬ В ТОМ что дивная дефиниция function(); игнорируется, повторяю - ИГНОРИРУЕТСЯ компилятором, и НЕ, как Вы вбили себе в голову, НЕ являтся прототипом функции с любым количеством аргументов. И эту, как Вы теперь пытаесь выкручиваться, "допустмую стандартом" неведомо для чего конструкцию, тот же GCC принимает за вызов функции и ругается на этот "прототип", что он не имеет прототипа

. Ах, да, тоже можно отключить требование соблюдать стандарт и использовать прототипы.
Ну не надо принимать наличие в Си мночисленых заплаток и костылей с помощью которых стараются обеспечить компиляцию всяких разных исходников писанных неведомо когда и неведомо кем, за НОРМУ.