W jednym C ma dwie możliwości zadeklarować strukturę:
struct STRUCT_NAME {} ;
lub
typedef struct {} STRUCT_ALIAS;
Jeśli używasz pierwszą metodę (podać struct nazwę) - należy zdefiniować zmienną zaznaczając go jednoznacznie jako a struct
:
struct STRUCT_NAME myStruct;
jednak jeśli używasz drugiej metody (struct dać się innymi s), a następnie można pominąć struct
identyfikator - kompilator może wywnioskować typ zmiennej podany jest jedynie to alias
:
STRUCT_ALIAS myStruct;
punkty bonusowe: Można zadeklarować struct zarówno jego nazwę i alias:
typedef struct STRUCT_TAG {} STRUCT_TAG;
// here STRUCT_NAME == STRUCT_ALIAS
Następnie w zmiennej definicji możesz użyć pierwszej lub drugiej metody. Dlaczego oba te dwa światy są dobre? Alias strukturalny pozwala skrócić definicje zmiennych strukturalnych - co czasami jest dobre. Ale nazwa struktury pozwala ci wykonać forward declarations
. Która jest niezbędnym narzędziem w niektórych przypadkach - rozważyć masz okrągłe odniesień między kodowanym:
struct A {
struct B * b;
}
struct B {
struct A * a;
}
Poza tym, że ta architektura może być wadliwy - to okrągły definicja kompilacji gdy struktury są zadeklarowane w pierwszy sposób (z nazwami) I struct Wskaźniki są jawnie przywoływane przez oznaczenie ich jako struct
.
Czy mieszania C i C++ razem tutaj? –
Upewnij się, że importujesz nagłówek: 'import" datasetup.h "'. – piperchester