Я написал функцию сравнения для bsearch в файле класса C ++
int comp(const void* keyBases, const void* offset) {
myStruct pi = *(myStruct*) keyBases;
const void* stringInFile = (char*)pi.first + *((int*)offset);
const void* searchString = pi.second;for (int i = 0; ; i++) {
char firstsChar = *((char*) searchString + i);
char secondsChar = *((char*) stringInFile + i);
toLowerCase(firstsChar); toLowerCase(secondsChar);
if (firstsChar < secondsChar) return -1;
if (firstsChar > secondsChar) return 1;
if (firstsChar == 0 && secondsChar == 0) return 0;
}
return 0;
}
как объявить это в заголовочном файле? Нужно ли статическое ключевое слово?
Функция декларация (также известный как функция прототип) — это просто заголовок функции без тела, заканчивающийся точкой с запятой. Он сообщает компилятору тип возвращаемого значения, имя функции, а также количество и типы аргументов.
В вашем случае это было бы просто
int comp(const void* keyBases, const void* offset);
Так как это просто объявление, оно может находиться где угодно в той же области видимости, что и определение, и вы можете даже иметь несколько (не конфликтующих!) Объявлений в одном и том же блок перевода.
Вы должны использовать только static
Ключевое слово, если вы определять функция (с полным телом) в заголовочном файле. Или если вы определите функцию как static
в исходном файле (технически в модуле перевода), и хотите предварительная декларация этого
Других решений пока нет …