1*03a8e70aSRaphael Isemann // In top-level scope. 2*03a8e70aSRaphael Isemann struct TopLevelStruct { 3*03a8e70aSRaphael Isemann int member; 4*03a8e70aSRaphael Isemann }; 5*03a8e70aSRaphael Isemann TopLevelStruct top_level_struct; 6*03a8e70aSRaphael Isemann 7*03a8e70aSRaphael Isemann // Nested in a class. 8*03a8e70aSRaphael Isemann struct OuterStruct { 9*03a8e70aSRaphael Isemann struct InnerStruct { 10*03a8e70aSRaphael Isemann int member; 11*03a8e70aSRaphael Isemann }; 12*03a8e70aSRaphael Isemann }; 13*03a8e70aSRaphael Isemann OuterStruct::InnerStruct inner_struct; 14*03a8e70aSRaphael Isemann 15*03a8e70aSRaphael Isemann // Behind typedef. 16*03a8e70aSRaphael Isemann struct UnderlyingTypedefStruct { 17*03a8e70aSRaphael Isemann int member; 18*03a8e70aSRaphael Isemann }; 19*03a8e70aSRaphael Isemann typedef UnderlyingTypedefStruct TypedefStruct; 20*03a8e70aSRaphael Isemann TypedefStruct typedef_struct; 21*03a8e70aSRaphael Isemann 22*03a8e70aSRaphael Isemann // In namespace. 23*03a8e70aSRaphael Isemann namespace NS { 24*03a8e70aSRaphael Isemann struct NamespaceStruct { 25*03a8e70aSRaphael Isemann int member; 26*03a8e70aSRaphael Isemann }; 27*03a8e70aSRaphael Isemann } // namespace NS 28*03a8e70aSRaphael Isemann NS::NamespaceStruct namespace_struct; 29*03a8e70aSRaphael Isemann 30*03a8e70aSRaphael Isemann // In unnamed namespace. 31*03a8e70aSRaphael Isemann namespace { 32*03a8e70aSRaphael Isemann struct UnnamedNamespaceStruct { 33*03a8e70aSRaphael Isemann int member; 34*03a8e70aSRaphael Isemann }; 35*03a8e70aSRaphael Isemann } // namespace 36*03a8e70aSRaphael Isemann UnnamedNamespaceStruct unnamed_namespace_struct; 37*03a8e70aSRaphael Isemann 38*03a8e70aSRaphael Isemann // In linkage spec. 39*03a8e70aSRaphael Isemann extern "C" { 40*03a8e70aSRaphael Isemann struct ExternCStruct { 41*03a8e70aSRaphael Isemann int member; 42*03a8e70aSRaphael Isemann }; 43*03a8e70aSRaphael Isemann } 44*03a8e70aSRaphael Isemann ExternCStruct extern_c_struct; 45*03a8e70aSRaphael Isemann main()46*03a8e70aSRaphael Isemannint main() { 47*03a8e70aSRaphael Isemann struct DeclInFunc { 48*03a8e70aSRaphael Isemann int member; 49*03a8e70aSRaphael Isemann }; 50*03a8e70aSRaphael Isemann 51*03a8e70aSRaphael Isemann DeclInFunc decl_in_func; 52*03a8e70aSRaphael Isemann return unnamed_namespace_struct.member; // break here 53*03a8e70aSRaphael Isemann } 54