Как работает это определение функции?C++

Программы на C++. Форум разработчиков
Anonymous
Как работает это определение функции?

Сообщение Anonymous »

Я сгенерировал хеш-функцию с помощью gperf пару дней назад. То, что я увидел в хэш-функции, было мне чуждо. Это было примерно так (точный синтаксис не помню):

Код: Выделить всё

unsigned int
hash(str, size)
register char* str;
register unsigned int size;
{
//Definition
}
Теперь, когда я попытался скомпилировать с помощью компилятора C++ (g++), он выдал мне ошибки из-за того, что не были объявлены str и size. Но это скомпилировано на компиляторе C (gcc). Итак, вопросы:
  • Я думал, что C++ — это надмножество C. Если это так, то это тоже должно компилироваться с помощью компилятора C++, верно?
  • Как компилятор C понимает это определение? str и size не объявлены при первом появлении.
  • Какова цель объявления str и size после подписи функции, но перед телом функции, а не следовать обычному подходу, делая это в любом из двух мест?
  • Как мне заставить эту функцию компилироваться на g++, чтобы я мог использовать ее в своем коде на C++? Или мне следует попробовать сгенерировать код C++ из gperf? Возможно ли это?


Подробнее здесь: https://stackoverflow.com/questions/423 ... ition-work

Вернуться в «C++»