Почему я не могу передать два символа в качестве аргументов функции в C? - PullRequest
0 голосов
/ 16 ноября 2009

У меня есть функция:

int get_symbol(tab *tp, FILE *fp, char delim)

и я называю это так:

get_symbol(tp, fp, ';')

Я всегда объявляю это в шапке как:

int get_symbol(tab *, FILE *, char);

Нет, все это отлично работает, я могу выполнить код в функции и установить разделитель. Но если я попытаюсь добавить еще один символ к сигнатуре функции, например:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2)

Функция прекращает выполнение. С чего бы это?

Ответы [ 3 ]

1 голос
/ 16 ноября 2009

Хорошо, здесь недостаточно информации, поэтому я собираюсь сделать резкий удар в ответ.

Вы используете компилятор C ++, и у вас не установлены слишком высокие уровни предупреждений. Вы изменили прототип функции, но не изменили аргументы при ее вызове. Компилятор C ++ рассматривает их как различные функции из-за перегрузки , и поэтому не вызывает правильную.

Это может быть далеко от того, что происходит. Если это так, дайте нам что-нибудь еще, чтобы продолжить ...

1 голос
/ 16 ноября 2009

Вы должны иметь:

int get_symbol(tab *tp, FILE *fp, char delim1, char delim2)
{
blah blah;
return 1;
}
...
...

get_symbol(tp, fp, ';','?')

Ты?

0 голосов
/ 16 ноября 2009

Как можно догадаться, что может означать "прекращение выполнения", вы также обновляли подпись в заголовочном файле?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...