2016-05-14 57 views
-1

我有这种类型的结构:创建一个空的结构

#define SUDOKU_SIZE 9 
typedef struct { 
    int grid[SUDOKU_SIZE][SUDOKU_SIZE]; 
} sudoku_t; 

但是,当我想创建一个:struct sudoku_t sudo;

我得到这个错误:错误:“S”的存储大小不知道

感谢

+5

我看不出有什么's'.Where是什么呢? –

+0

你的代码中没有'struct sudoku_t'这样的类型。 – AnT

回答

5

使用typedef,创建一个新的类型;你可以简单地引用它的名字sudoku_t(而不是struct sudoku_t)。因此,而不是写struct sudoku_t s;

sudoku_t s; 

。如果由于某种原因,你实际上创建一个命名结构,降的typedef:

struct sudoku_t { 
    int grid[SUDOKU_SIZE][SUDOKU_SIZE]; 
}; 

int main() { 
    struct sudoku_t s; 
} 
+2

好点,OP,如果你想同时使用(带或不带'struct'关键字),可使用'typedef结构sudoku_t {INT电网[SUDOKU_SIZE] [SUDOKU_SIZE];} sudoku_t;' –

+1

这有什么奇怪的有关创建一个命名结构?我们中的一些人喜欢使用结构标签并删除typedefs。 –

+0

@KeithThompson是的,你说得对。我已经删除了这个答案中偏见的措词。 – phihag