我在c ++类文件中为bsearch编写了比较函数
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;
}
如何在头文件中声明它?是否需要使用静态关键字?
答案 0 :(得分:1)
函数声明(也称为函数 prototype )只是没有正文的函数头,以分号结尾。它告诉编译器返回类型,函数名称以及参数的数量和类型。
在你的情况下,它只是
int comp(const void* keyBases, const void* offset);
因为它只是一个声明,它可以在与定义相同的范围内的任何位置,甚至可以在同一translation unit中有多个(非冲突的!)声明。
如果您在头文件中定义函数(带有完整正文),则只应使用static
关键字。或者,如果您在源文件中定义函数static
(技术上在翻译单元中),并且需要前向声明。