Как объявить функцию сравнения в заголовке

Я написал функцию сравнения для 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;
}

как объявить это в заголовочном файле? Нужно ли статическое ключевое слово?

-3

Решение

Функция декларация (также известный как функция прототип) — это просто заголовок функции без тела, заканчивающийся точкой с запятой. Он сообщает компилятору тип возвращаемого значения, имя функции, а также количество и типы аргументов.

В вашем случае это было бы просто

int comp(const void* keyBases, const void* offset);

Так как это просто объявление, оно может находиться где угодно в той же области видимости, что и определение, и вы можете даже иметь несколько (не конфликтующих!) Объявлений в одном и том же блок перевода.

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

1

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

Других решений пока нет …