10

C 内で void * 関数呼び出しから整数を返す適切な方法を見つけようとしています。

つまり..

#include <stdio.h>

void *myfunction() {
 int x = 5;
 return x;
}

int main() {
  printf("%d\n", myfunction());
  return 0;
}

しかし、私は取得し続けます:

警告: return はキャストなしで整数からポインタを作成します

この作業を行うために必要なキャストはありますか? 問題なく x を返すように見えます。実際の myfunction は構造体と文字列へのポインタも返しますが、これらはすべて期待どおりに機能します。

4

4 に答える 4

0

gcc -pedanticこのソースを次のようにコンパイルしました。

 #include <stdio.h>

 void *myfunction() {
   size_t x = 5;  
   return (void*)x;
 }

 int main() {
   printf("%d\n", *(int*)myfunction());
   return 0;
 }

警告はありません

于 2016-01-05T15:32:48.037 に答える