是否在C99中刪除了功能stricmp()
和strnicmp()
? 當我嘗試對C99進行編譯時,我總是得到警告函數的隱式聲明stricmp()(還有strnicmp())。例如,下面的簡單代碼會讓我發出警告。C99刪除stricmp()和strnicmp()?
#include<string.h>
#include<stdio.h>
char arr[100]="hello";
char arr2[100]="hEllo";
int main()
{
int n=-1;
printf("%d\n",n);
n=strnicmp(arr,arr2,3); // the same when use the function stricmp();
printf("%d\n",n);
getchar();
return 0;
}
當我嘗試編譯這段代碼對C99(gcc -Wall -std=c99 main.c -o main
),我得到的警告。但是,如果我在沒有-std=c99
的情況下編譯它,則不會引發警告。 但是,即使存在隱式聲明的警告,我的代碼仍然正常工作。
這是爲什麼?這是一個錯誤?如果不是bug,那麼發生這種警告的C99的變化究竟是什麼?
嘗試'-std = gnu99' –
這些函數在C標準中有*從未*,事實上在C標準中沒有不區分大小寫的字符串比較函數。 'stricmp','strcasecmp'等函數全部由其他標準擴展或定義(POSIX,WIndows等) –
請參見[g ++錯誤:'stricmp'未在此範圍內聲明(但對於'strcmp'確定) ](http://stackoverflow.com/q/1784767/1708801) –