簡體   English   中英

如何在標題中聲明比較函數

[英]How to declare compare function in header

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

如何在頭文件中聲明它? 是否需要靜態關鍵字?

函數聲明(也稱為函數原型)只是沒有函數體的函數頭,以分號結尾。 它告訴編譯器返回類型、函數名稱以及參數的數量和類型。

在你的情況下,它只是

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

因為它只是一個聲明,所以它可以在與定義相同的范圍內的任何地方,你甚至可以在同一個翻譯單元中有多個(不沖突!)聲明。

如果您在頭文件中定義函數(及其完整的主體),您應該只使用static關鍵字。 或者,如果您在源文件中將函數定義為static (技術上在翻譯單元中),並且想要對其進行前向聲明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM