teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コメントにしてたエラーケースの個数不足を修正し、実際のエラーを記載

2019/02/13 09:47

投稿

wwbQzhMkhhgEmhU
wwbQzhMkhhgEmhU

スコア343

answer CHANGED
@@ -23,7 +23,7 @@
23
23
  Vertex a[] = {
24
24
  {{1,2,3},{4,5,6}}, // 普通
25
25
  {{2,3},{5,6}}, // 少ない
26
- //{{2,3,4},{5,6,7}}, 多い。これはgcc 8.2.0だとエラー
26
+ //{{2,3,4},{5,6,7,8}}, 多い。これはgcc 8.2.0だとエラー
27
27
  {2,3,4,5,6,7}, // 古い書き方(普通)
28
28
  {2,3,4,5,6}, // 古い書き方(少ない)
29
29
  //{2,3,4,5,6,7,8} 古い書き方(多い)。これはgcc 8.2.0だとエラー
@@ -76,6 +76,55 @@
76
76
  1: a = {{position = {1, 2, 3}, normal = {4, 5, 6}}, {position = {2, 3, 0}, normal = {5, 6, 0}}, {
77
77
  position = {2, 3, 4}, normal = {5, 6, 7}}, {position = {2, 3, 4}, normal = {5, 6, 0}}}
78
78
  (gdb)
79
+ ```
79
80
 
81
+ 多くてエラーになるケース(1)
82
+ ```text
83
+ user@lubuntu:~/cpp$ cat test.cpp
84
+ struct Vertex
85
+ {
86
+ float position[3];
87
+ float normal[3];
88
+ };
80
89
 
90
+ Vertex a[] = {
91
+ {{1,2,3},{4,5,6}}, // 普通
92
+ {{2,3},{5,6}}, // 少ない
93
+ {{2,3,4},{5,6,7,8}},// 多い。これはgcc 8.2.0だとエラー
94
+ {2,3,4,5,6,7}, // 古い書き方(普通)
95
+ {2,3,4,5,6}, // 古い書き方(少ない)
96
+ //{2,3,4,5,6,7,8} // 古い書き方(多い)。これはgcc 8.2.0だとエラー
97
+ };
98
+
99
+ int main() {return 0;}
100
+ user@lubuntu:~/cpp$ g++ -g test.cpp -o test
101
+ test.cpp:14:1: error: too many initializers for ‘float [3]’
102
+ };
103
+ ^
104
+ user@lubuntu:~/cpp$
105
+ ```
106
+ 多くてエラーになるケース(2)
107
+ ```text
108
+ user@lubuntu:~/cpp$ cat test.cpp
109
+ struct Vertex
110
+ {
111
+ float position[3];
112
+ float normal[3];
113
+ };
114
+
115
+ Vertex a[] = {
116
+ {{1,2,3},{4,5,6}}, // 普通
117
+ {{2,3},{5,6}}, // 少ない
118
+ //{{2,3,4},{5,6,7,8}}, 多い。これはgcc 8.2.0だとエラー
119
+ {2,3,4,5,6,7}, // 古い書き方(普通)
120
+ {2,3,4,5,6}, // 古い書き方(少ない)
121
+ {2,3,4,5,6,7,8} // 古い書き方(多い)。これはgcc 8.2.0だとエラー
122
+ };
123
+
124
+ int main() {return 0;}
125
+ user@lubuntu:~/cpp$ g++ -g test.cpp -o test
126
+ test.cpp:14:1: error: too many initializers for ‘Vertex’
127
+ };
128
+ ^
129
+ user@lubuntu:~/cpp$
81
130
  ```