[英]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.