Last Update 2021/10/04
-Wno-incompatible-pointer-types
互換性の無い型のポインタ間で変換が生じた場合でも警告しない
テスト概要
オプション無し、および-Wno-incompatible-pointer-typesオプションを使用した際の警告出力例
実行環境
GCC-8.2.0
GNU C Library 2.28
GNU Binutils 2.31.1
GNU C Library 2.28
GNU Binutils 2.31.1
コード例・出力内容中の表記
・実行例中の太字表記部分は、コマンドなどの入力された文字列を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
・「︙」や「...」の着色省略表記は、 実際のソースコードや出力内容などを省略加工した部分を示します。
使用ファイル
sample.c
#include <stdio.h>
void sampFunc(char *str)
{
printf("[%s]\n", str);
}
int main(void)
{
int n = 0;
int *np = &n;
unsigned char uc = 1;
/* int型ポインタをunsigned char型変数のアドレスで初期化 */
int *cp = &uc;
/* int型ポインタをchar型ポインタで宣言されている関数の引数に使用 */
sampFunc(np);
return 0;
}
オプション無しでコンパイルを実行
$ gcc sample.c
sample.c: In function ‘main’:
sample.c:16:12: warning: initialization of ‘int *’ from incompatible pointer type ‘unsigned char *’ [-Wincompatible-pointer-types]
int *cp = &uc;
^
sample.c:19:11: warning: passing argument 1 of ‘sampFunc’ from incompatible pointer type [-Wincompatible-pointer-types]
sampFunc(np);
^~
sample.c:3:21: note: expected ‘char *’ but argument is of type ‘int *’
void sampFunc(char *str)
~~~~~~^~~
$ ポインタの互換性の無い型による初期化、および、互換性の無いポインタ型による引数渡しに関する警告
-Wno-incompatible-pointer-typesオプション使用してコンパイルを実行
$ gcc -Wno-incompatible-pointer-types sample.c エラー・警告無し
$