次のように関数を宣言して定義します。
unsigned int doSomething(unsigned int *x, int y)
{
if(1) //works
if(y) //reports the error given below
//I use any one of the ifs above, and not both at a time
return ((*x) + y); //works fine when if(1) is used, not otherwise
}
次のように main() から関数を呼び出します。
unsigned int x = 10;
doSomething(&x, 1);
コンパイラは、次のようにエラーと警告を報告します。
passing argument 1 of 'doSomething' makes pointer from integer without a cast [enabled by default]|
note: expected 'unsigned int *' but argument is of type 'int'|
関数の戻り値の型、関数呼び出し、および引数の型について、考えられるすべての組み合わせを使用してみました。どこが間違っていますか?
完全なコード:
unsigned int addTwo(unsigned int *x, int y)
{
if(y)
return ((*x) + y);
}
int main()
{
unsigned int operand = 10;
printf("%u", addTwo(&operand, 1));
return 0;
}