cc を使用してコンパイルされた長いファイルに C コードがあります。しかし、gcc でコンパイルしようとすると、エラーが発生します。その特定のコードを小さなプログラムで取り、ccでコンパイルしようとしましたが、そこで失敗しました。
ソースは次のとおりです。
#include <stdio.h>
int main (int argc, char **argv)
{
char unsigned FileName[100];
char test[100];
FileName[strstr(FileName,test) - FileName] = 0;
return 0;
}
この行が問題を引き起こしています:
FileName[strstr(FileName,test) - FileName] = 0;
CC のエラーは次のとおりです。
"foo.c", line 10: operands have incompatible types:
int "-" pointer to unsigned char
そしてgccでは:
foo.c:10: error: invalid operands to binary - Both are same.
しかし、CCで元のファイルをコンパイルすると、コンパイルされて警告が表示されます。このような:
"dbtprc.c", line 643: warning: argument #1 is incompatible with prototype:
prototype: pointer to const char : "/usr/include/iso/string_iso.h", line 133
argument : pointer to unsigned char
"dbtprc.c", line 643: warning: improper pointer subtraction
ここで「不適切なポインター減算」という警告が表示され、サンプルプログラムがエラーを表示している理由を教えてください。