Я проверил это на моем Linux-компьютере, в котором есть gcc, и он прекрасно компилируется.
void myFunc(int* &input);
Это компилируется без ошибок.
На моем avr, объявив ту же функцию:
void myFunc(int* &input);
Приводит к ошибке компиляции:
expected ';', ',' or ')' before '&' token
версия gcc на linux — 4.6.3
версия gcc для avr (avr-gcc) — 3.4.2
В C (не уверен насчет C ++)
void myFunc(int* &input);
не является действительной декларацией. В C все звонки по значению. Там нет вызова по ссылке в отличие от C ++.
Сохранить этот код с .c
расширение и компиляция. Вы получите ту же ошибку. Потому что C не позволяет использовать ссылки в списке параметров функции, тогда как объявление и определение As Like C ++.
Используемая вами декларация действительна в C ++, но недействительна в C, поскольку в C нет ссылок. Вы должны использовать g++
или другой компилятор C ++ для компиляции кода.
void myFunc(int* &input);
Кстати, это передает указатель от ссылка, а не указатель на ссылку. То есть ссылка на указатель, а не наоборот.