Почему функция со входом, имеющая ссылку на указатель, не компилируется?

Я проверил это на моем 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

2

Решение

В C (не уверен насчет C ++)

void myFunc(int* &input);

не является действительной декларацией. В C все звонки по значению. Там нет вызова по ссылке в отличие от C ++.

5

Другие решения

Сохранить этот код с .c расширение и компиляция. Вы получите ту же ошибку. Потому что C не позволяет использовать ссылки в списке параметров функции, тогда как объявление и определение As Like C ++.

2

Используемая вами декларация действительна в C ++, но недействительна в C, поскольку в C нет ссылок. Вы должны использовать g++ или другой компилятор C ++ для компиляции кода.

void myFunc(int* &input);

Кстати, это передает указатель от ссылка, а не указатель на ссылку. То есть ссылка на указатель, а не наоборот.

2