-3

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

如何在头文件中声明?需要静态关键字吗?

4

1 回答 1

1

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

在你的情况下,它只是

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

由于它只是一个声明,它可以在与定义相同范围内的任何位置,您甚至可以在同一个翻译单元中拥有多个(非冲突!)声明。

如果您在头文件中定义函数(及其完整主体),则应仅使用static关键字。或者,如果您将函数定义为在源文件中(技术上在翻译单元中),并希望对其进行前向声明static

于 2017-10-12T07:49:55.073 回答