2012-04-13 2 views
4

Пожалуйста, скажи мне, что разницаОтличия следующих фрагментов

typedef struct Tcl_ObjType { 
    char *name; 
    Tcl_FreeInternalRepProc *freeIntRepProc; 
    Tcl_DupInternalRepProc *dupIntRepProc; 
    Tcl_UpdateStringProc *updateStringProc; 
    Tcl_SetFromAnyProc *setFromAnyProc; 
} Tcl_ObjType; 

и

struct Tcl_ObjType { 
    char *name; 
    Tcl_FreeInternalRepProc *freeIntRepProc; 
    Tcl_DupInternalRepProc *dupIntRepProc; 
    Tcl_UpdateStringProc *updateStringProc; 
    Tcl_SetFromAnyProc *setFromAnyProc; 
}; 

меня увидеть первую версию здесь: http://www.tcl.tk/man/tcl8.5/TclLib/ObjectType.htm, и не знаю, почему это написано как есть.

+0

http://www.functionx.com/cpp/keywords/typedef.htm – talnicolas

ответ

9

Для C++, нет разницы.

Если бы это была программа C и вы использовали первый вариант, вы можете сделать:

Tcl_ObjType instanceOfStructure; 

вместо

struct Tcl_ObjType instanceOfStructure; 
+0

Но в C для второй версии я не могу писать Tcl_ObjType instanceOfStructure; ??? – Narek

+0

@Narek нет, вам нужно написать 'struct Tcl_ObjType instanceOfStructure;'. Это уловка. –

+2

Дополнительную информацию о структурах на языках C и C++ см. По адресу http://www.cprogramming.com/tutorial/c-vs-c++.html. – mydogisbox

1

Вы дали структуру определение типа (В нестандартные термины, предоставленные альтернативное имя существующего типа):

Используя ваш первый пример, вы можете использовать его для ссылки на объекты/объявить n ЭВ объекты через:

Tcl_ObjType newObj; 
+0

Как вы можете во втором примере. Первый - это C'ism; в C, теги структуры живут в собственном пространстве имен и видны только после ключевого слова 'struct'. В C++ теги структуры вводятся в окружении, как и любой другой символ. –

Смежные вопросы