Я работаю над переносом старого кода K & R на ANSI C, поэтому пишу отсутствующие объявления прототипов функций. У многих определений функций есть параметры с классом хранения регистров, но я не уверен, можно ли опустить спецификатор класса хранения регистров в прототипе функции?
С определением класса хранилища регистров и без него код компилируется правильно (я пробовал GCC, VC++ и Watcom C). Я не смог найти никакой информации в стандарте ISO/ANSI C89 о том, что делать правильно - нормально ли, если я просто введу ключевое слово register в определение функции?
int add(register int x, register int y);
int add(register int x, register int y)
{
return x+y;
}
Это также строит правильно:
int add(int x, int y);
int add(register int x, register int y)
{
return x+y;
}
Я хочу убедиться, что спецификатор хранилища регистров действительно учитывается в соответствии со стандартом (моя цель - компилировать с использованием очень старого компилятора, где важен этот спецификатор класса хранилища). Оба в порядке, и это просто вопрос стиля кодирования, или нет?