- ベストアンサー
gcc: incompatible pointer type
以下のCソースでコンパイルすると、warning: passing arg 1 of `func_b' from incompatible pointer type となります。 void (*p_func)() は、引数を省略しているので int として扱われるということでしょうか? #include <stdio.h> #include <stdlib.h> void func_a( unsigned char x ){ printf( "x=%d\n", x ) ; } void func_b( void (*p_func)() ){ p_func( 1 ) ; } int main(){ func_b( func_a ) ; return 0 ; }
- みんなの回答 (3)
- 専門家の回答
補足
void (*p_func)()と仮引数を省略=intかと思っていたのですが、voidということでしょうか。 #shige_70さんも「intでない場合は省略するとWarningがでます」と。 文献は探してませんが何かありますでしょうか。 こちらは PC上でgccを使用していますが、void func_a(unsigned char x)のunsigned charのところを、void, int, unsigned long, char*などのポインタ全般、としてもWarningは出ません。一方、unsigned shortはWarningとなります。