fork download
  1. #include <stdio.h>
  2.  
  3. /*
  4. 独学でC/C++の学習をしています。
  5. 構造体について質問です。
  6.  
  7. struct か typedef structのどちらを使用するか迷っています。
  8.  
  9. ・個人的にはtypedef structと書いて、宣言時にstructを省略することに魅力を感じません。
  10. (可読性が失われるから)
  11.  
  12. ・実際にはどちらがよく使用されているのでしょうか?
  13. ・typedef structと書いても struct _hoge hoge = {1,2,3}; と宣言できるため typedefをしておいたほうがよいのでしょうか?
  14. */
  15.  
  16. struct _hoge {
  17. int a;
  18. int b;
  19. int c;
  20. };
  21.  
  22. typedef struct _hoge2 {
  23. int a;
  24. int b;
  25. int c;
  26. };
  27.  
  28. int main() {
  29. struct _hoge hoge[] = {
  30. {1,2,3}, {4,5,6}
  31. };
  32.  
  33. _hoge2 hoge2[] = {
  34. {7,8,9}, {10,11,12}
  35. };
  36.  
  37. printf("%d %d %d\n%d %d %d\n", hoge[0], hoge[1]);
  38. printf("\n");
  39. printf("%d %d %d\n%d %d %d\n", hoge2[0], hoge2[1]);
  40. return 0;
  41. }
  42.  
Compilation error #stdin compilation error #stdout 0s 0KB
stdin
Standard input is empty
compilation info
prog.c:26: warning: useless storage class specifier in empty declaration
prog.c: In function ‘main’:
prog.c:33: error: ‘_hoge2’ undeclared (first use in this function)
prog.c:33: error: (Each undeclared identifier is reported only once
prog.c:33: error: for each function it appears in.)
prog.c:33: error: expected ‘;’ before ‘hoge2’
prog.c:37: warning: format ‘%d’ expects type ‘int’, but argument 2 has type ‘struct _hoge’
prog.c:37: warning: format ‘%d’ expects type ‘int’, but argument 3 has type ‘struct _hoge’
prog.c:37: warning: too few arguments for format
prog.c:39: error: ‘hoge2’ undeclared (first use in this function)
prog.c:39: warning: too few arguments for format
stdout
Standard output is empty