如何在标题

时间:2017-10-12 07:25:02

标签: c++ class header-files bsearch sortcomparefunction

我在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;
}

如何在头文件中声明它?是否需要使用静态关键字?

1 个答案:

答案 0 :(得分:1)

函数声明(也称为函数 prototype )只是没有正文的函数头,以分号结尾。它告诉编译器返回类型,函数名称以及参数的数量和类型。

在你的情况下,它只是

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

因为它只是一个声明,它可以在与定义相同的范围内的任何位置,甚至可以在同一translation unit中有多个(非冲突的!)声明。

如果您在头文件中定义函数(带有完整正文),则只应使用static关键字。或者,如果您在源文件中定义函数static(技术上在翻译单元中),并且需要前向声明