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