diff --git a/examples/lib/lib_test/Makefile b/examples/lib/lib_test/Makefile index e1d0b14..ca29732 100644 --- a/examples/lib/lib_test/Makefile +++ b/examples/lib/lib_test/Makefile @@ -1,7 +1,9 @@ -TARGET=lib_test +TARGET_C=lib_test_c99 +TARGET_CXX=lib_test_cxx SRCS+=$(wildcard *.c) CFLAGS+=-std=c99 -g +CXXFLAGS+=-std=c++11 -g INCLUDES+= LIB_DIRS+= LIBS+= @@ -11,15 +13,33 @@ LDFLAGS+= CXXFLAGS+=$(INCLUDES) LDFLAGS+=$(LIB_DIRS) LDFLAGS+=$(LIBS) -OBJS+=$(SRCS:.c=.o) +OBJS_C+=$(SRCS:.c=.o99) +OBJS_CXX+=$(SRCS:.c=.oxx) -.PHONY: all clean +.PHONY: all c99 cxx clean -all: $(TARGET) +all: c99 -$(TARGET) : $(OBJS) +# C99 +c99: $(TARGET_C) + +%.o99 : %.c + $(CC) $(CFLAGS) -c $< -o $@ + +$(TARGET_C) : $(OBJS_C) $(CC) $(LDFLAGS) -o $@ $^ +# C++ +cxx: $(TARGET_CXX) + +%.oxx : %.c + $(CXX) $(CXXFLAGS) -c $< -o $@ + +$(TARGET_CXX) : $(OBJS_CXX) + $(CXX) $(LDFLAGS) -o $@ $^ + clean: - rm -f $(TARGET) - rm -f $(OBJS) + rm -f $(TARGET_C) + rm -f $(TARGET_CXX) + rm -f $(OBJS_C) + rm -f $(OBJS_CXX) diff --git a/examples/lib/lib_test/enums.h b/examples/lib/lib_test/enums.h index b5b7352..406a0cd 100644 --- a/examples/lib/lib_test/enums.h +++ b/examples/lib/lib_test/enums.h @@ -1,6 +1,10 @@ #ifndef ENUMS_H #define ENUMS_H +#ifdef __cplusplus +extern "C" { +#endif + // Enums // ===== // Enums can be combined with the item qualifiers I, A and (only enums) X @@ -17,13 +21,14 @@ // _XE = anonymous enum without an alias // AXE = alias of an anonymous enum - -// _IE = incomplete enum without anb alias -enum _IE; - -// IE = incomplete enum -// AIE = alias of an incomplete enum -typedef enum IE AIE; +// FORBIDDEN IN C++ +#ifndef __cplusplus + // _IE = incomplete enum without anb alias + enum _IE; + // IE = incomplete enum + // AIE = alias of an incomplete enum + typedef enum IE AIE; +#endif // _E = enum without an alias enum _E { @@ -53,4 +58,8 @@ typedef enum { AXE3 } AXE; +#ifdef __cplusplus +} +#endif + #endif //ENUMS_H diff --git a/examples/lib/lib_test/functions.h b/examples/lib/lib_test/functions.h index eaccca3..12e039c 100644 --- a/examples/lib/lib_test/functions.h +++ b/examples/lib/lib_test/functions.h @@ -6,6 +6,9 @@ #include "structs.h" #include "vars.h" +#ifdef __cplusplus +extern "C" { +#endif void func_void_void(); @@ -34,6 +37,9 @@ TPS func_TPS_V(); void func_V_TPS(TPS); TPS func_TPS_TPS(TPS); +#ifdef __cplusplus +} +#endif #endif //FUNCTIONS_H diff --git a/examples/lib/lib_test/lib_test.c b/examples/lib/lib_test/lib_test.c index 3b5b1d6..c3c16b5 100644 --- a/examples/lib/lib_test/lib_test.c +++ b/examples/lib/lib_test/lib_test.c @@ -1,9 +1,559 @@ #include "lib_test.h" -struct _PS func__PS_V() { - return var__PS; -} +// Variables +// ========= +// _V = Void +//void var__V; + +// _P +extern char var__P = 'x'; + +// enums +// ===== +// Incomplete types: +// enum _IE var__IE; +// enum IE var_IE; +// AIE var_AIE; +extern enum _E var__E; +extern enum E var_E; +extern AE var_AE; +extern AXE var_AXE; + + +// structs +// ======= +// Incomplete types +// struct _IS var__IS; +// struct IS var_IS; +// AIS var_AIS; + +// primitive structs +extern struct _PS var__PS; +extern struct PS var_PS; +extern APS var_APS; + +// primitive structs containing arrays +extern struct _PSIa var__PSIa; +extern struct PSIa var_PSIa; +extern APSIa var_APSIa; +extern struct _PSa var__PSa; +extern struct PSa var_PSa; +extern APSa var_APSa; + +// complex structs +extern struct _CS var__CS; +extern struct CS var_CS; +extern ACS var_ACS; + +extern struct _CCS var__CCS; +extern struct CCS var_CCS; +extern ACCS var_ACCS; + +// nested structs / hosting structs +struct _HS var__HS; +extern AHS var_AHS; +extern struct HS var_HS; +extern struct HHS var_HHS; +extern AHHS var_AHHS; +extern struct _HHS var__HHS; +extern struct _HS1 var__HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern struct _NCS var__NCS; + extern struct _NPS var__NPS; + extern struct _NHS var__NHS; + extern struct _NNPS var__NNPS; + extern struct _NHS1 var__NHS1; + extern struct _NNCS var__NNCS; + extern enum _NENHS var__NENHS; + extern enum _NEHS var__NEHS; +#endif + +// TYPEDEFS +// ======== + +// Typedefs of primitive +// --------------------- +//TV var_TV; +T_P var_T_P; + +// Typedefs of structs +// ------------------ +// Incomplete types +//T_IS var_T_IS; +//TIS var_TIS; +//TAIS var_TAIS; + +// primitive structs +extern T_PS var_T_PS; +extern TPS var_TPS; +extern TAPS var_TAPS; + +// primitive structs containing arrays +extern T_PSIa var_T_PSIa; +extern TPSIa var_TPSIa; +extern TAPSIa var_TAPSIa; +extern T_PSa var_T_PSa; +extern TPSa var_TPSa; +extern TAPSa var_TAPSa; + +// complex structs +extern T_CS var_T_CS; +extern TCS var_TCS; +extern TACS var_TACS; +extern T_CCS var_T_CCS; +extern TCCS var_TCCS; +extern TACCS var_TACCS; + +// nested structs / hosting structs +extern T_HS var_T_HS; +extern THS var_THS; +extern TAHS var_TAHS; +extern T_HHS var_T_HHS; +extern THHS var_THHS; +extern TAHHS var_TAHHS; +extern T_HS1 var_T_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern T_NENHS var_T_NENHS; + extern T_NCS var_T_NCS; + extern T_NPS var_T_NPS; + extern T_NHS var_T_NHS; + extern T_NNPS var_T_NNPS; + extern T_NNCS var_T_NNCS; + extern T_NHS1 var_T_NHS1; + extern T_NEHS var_T_NEHS; +#endif + +// Typedef of enums +// ---------------- +// Incomplete types +//T_IE var_TIE; +//TIE var_TIE; +//TAIE var_TAIE; +extern T_E var_T_E; +extern TE var_TE; +extern TAE var_TAE; +extern TAXE var_TAXE; + + + +// TYPEDEFS OF TYPEDEFS +// ==================== + +// Typedefs of primitive +// --------------------- +extern TT_P var_TT_P; + +// typedefs of typedefs of structs +// ------------------------------- +// primitive structs +extern TT_PS var_TT_PS; +extern TTPS var_TTPS; +extern TTAPS var_TTAPS; + +// primitive structs containing arrays +extern TT_PSIa var_TT_PSIa; +extern TTPSIa var_TTPSIa; +extern TTAPSIa var_TTAPSIa; +extern TT_PSa var_TT_PSa; +extern TTPSa var_TTPSa; +extern TTAPSa var_TTAPSa; + +// complex structs +extern TT_CS var_TT_CS; +extern TTCS var_TTCS; +extern TTACS var_TTACS; +extern TT_CCS var_TT_CCS; +extern TTCCS var_TTCCS; +extern TTACCS var_TTACCS; + +// nested structs / hosting structs +extern TT_HS var_TT_HS; +extern TTHS var_TTHS; +extern TTAHS var_TTAHS; +extern TT_HHS var_TT_HHS; +extern TTHHS var_TTHHS; +extern TTAHHS var_TTAHHS; +extern TT_HS1 var_TT_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TT_NENHS var_TT_NENHS; + extern TT_NCS var_TT_NCS; + extern TT_NPS var_TT_NPS; + extern TT_NHS var_TT_NHS; + extern TT_NNPS var_TT_NNPS; + extern TT_NNCS var_TT_NNCS; + extern TT_NHS1 var_TT_NHS1; + extern TT_NEHS var_TT_NEHS; +#endif + + // typedefs of typedefs enums +// -------------------------- +extern TT_E var_TT_E; +extern TTE var_TTE; +extern TTAE var_TTAE; +extern TTAXE var_TTAXE; + + + + + + + + + + + +// =================== +// ARRAYS OF ALL ABOVE +// =================== +// only complete arrays. no [] +// Variables +// ========= +// _V = Void +//void var_a_V; + +// _P +extern char var_a_P[3]; + +// enums +// ===== +// Incomplete types: +// enum _IE var__IE; +// enum IE var_IE; +// AIE var_AIE; +extern enum _E var_a_E[3]; +extern enum E var_aE[3]; +extern AE var_aAE[3]; +extern AXE var_aAXE[3]; + + +// structs +// ======= +// Incomplete types +// struct _IS var__IS; +// struct IS var_IS; +// AIS var_AIS; + +// primitive structs +extern struct _PS var_a_PS[3]; +extern struct PS var_aPS[3]; +extern APS var_aAPS[3]; + +// primitive structs containing arrays +extern struct _PSIa var_a_PSIa[3]; +extern struct PSIa var_aPSIa[3]; +extern APSIa var_aAPSIa[3]; +extern struct _PSa var_a_PSa[3]; +extern struct PSa var_aPSa[3]; +extern APSa var_aAPSa[3]; + +// complex structs +extern struct _CS var_a_CS[3]; +extern struct CS var_aCS[3]; +extern ACS var_aACS[3]; +extern struct _CCS var_a_CCS[3]; +extern struct CCS var_aCCS[3]; +extern ACCS var_aACCS[3]; + +// nested structs / hosting structs +extern struct _HS var_a_HS[3]; +extern struct HS var_aHS[3]; + +extern AHS var_aAHS[3]; +extern struct _HHS var_a_HHS[3]; +extern struct HHS var_aHHS[3]; +extern AHHS var_aAHHS[3]; +extern struct _HS1 var_a_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern struct _NCS var_a_NCS[3]; + extern struct _NPS var_a_NPS[3]; + extern struct _NHS var_a_NHS[3]; + extern struct _NNPS var_a_NNPS[3]; + extern struct _NHS1 var_a_NHS1[3]; + extern struct _NNCS var_a_NNCS[3]; + extern enum _NENHS var_a_NENHS[3]; + extern enum _NEHS var_a_NEHS[3]; +#endif + +// TYPEDEFS +// ======== + +// Typedefs of primitive +// --------------------- +//TV var_TV; +extern T_P var_aT_P[3]; + +// Typedefs of structs +// ------------------ +// Incomplete types +//T_IS var_T_IS; +//TIS var_TIS; +//TAIS var_TAIS; + +// primitive structs +extern T_PS var_aT_PS[3]; +extern TPS var_aTPS[3]; +extern TAPS var_aTAPS[3]; + +// primitive structs containing arrays +extern T_PSIa var_aT_PSIa[3]; +extern TPSIa var_aTPSIa[3]; +extern TAPSIa var_aTAPSIa[3]; +extern T_PSa var_aT_PSa[3]; +extern TPSa var_aTPSa[3]; +extern TAPSa var_aTAPSa[3]; + +// complex structs +extern T_CS var_aT_CS[3]; +extern TCS var_aTCS[3]; +extern TACS var_aTACS[3]; +extern T_CCS var_aT_CCS[3]; +extern TCCS var_aTCCS[3]; +extern TACCS var_aTACCS[3]; + +// nested structs / hosting structs +extern T_HS var_aT_HS[3]; +extern THS var_aTHS[3]; +extern TAHS var_aTAHS[3]; +extern T_HHS var_aT_HHS[3]; +extern THHS var_aTHHS[3]; +extern TAHHS var_aTAHHS[3]; +extern T_HS1 var_aT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern T_NENHS var_aT_NENHS[3]; + extern T_NCS var_aT_NCS[3]; + extern T_NPS var_aT_NPS[3]; + extern T_NHS var_aT_NHS[3]; + extern T_NNPS var_aT_NNPS[3]; + extern T_NNCS var_aT_NNCS[3]; + extern T_NHS1 var_aT_NHS1[3]; + extern T_NEHS var_aT_NEHS[3]; +#endif + +// Typedef of enums +// ---------------- +// Incomplete types +//T_IE var_aTIE[3]; +//TIE var_aTIE[3]; +//TAIE var_aTAIE[3]; +extern T_E var_aT_E[3]; +extern TE var_aTE[3]; +extern TAE var_aTAE[3]; +extern TAXE var_aTAXE[3]; + + + +// TYPEDEFS OF TYPEDEFS +// ==================== + +// Typedefs of primitive +// --------------------- +extern TT_P var_aTT_P[3]; + +// typedefs of typedefs of structs +// ------------------------------- +// primitive structs +extern TT_PS var_aTT_PS[3]; +extern TTPS var_aTTPS[3]; +extern TTAPS var_aTTAPS[3]; + +// primitive structs containing arrays +extern TT_PSIa var_aTT_PSIa[3]; +extern TTPSIa var_aTTPSIa[3]; +extern TTAPSIa var_aTTAPSIa[3]; +extern TT_PSa var_aTT_PSa[3]; +extern TTPSa var_aTTPSa[3]; +extern TTAPSa var_aTTAPSa[3]; + +// complex structs +extern TT_CS var_aTT_CS[3]; +extern TTCS var_aTTCS[3]; +extern TTACS var_aTTACS[3]; +extern TT_CCS var_aTT_CCS[3]; +extern TTCCS var_aTTCCS[3]; +extern TTACCS var_aTTACCS[3]; + +// nested structs / hosting structs +extern TT_HS var_aTT_HS[3]; +extern TTHS var_aTTHS[3]; +extern TTAHS var_aTTAHS[3]; +extern TT_HHS var_aTT_HHS[3]; +extern TTHHS var_aTTHHS[3]; +extern TTAHHS var_aTTAHHS[3]; +extern TT_HS1 var_aTT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TT_NENHS var_aTT_NENHS[3]; + extern TT_NCS var_aTT_NCS[3]; + extern TT_NPS var_aTT_NPS[3]; + extern TT_NHS var_aTT_NHS[3]; + extern TT_NNPS var_aTT_NNPS[3]; + extern TT_NNCS var_aTT_NNCS[3]; + extern TT_NHS1 var_aTT_NHS1[3]; + extern TT_NEHS var_aTT_NEHS[3]; +#endif + + +// typedefs of typedefs enums +// -------------------------- +extern TT_E var_aTT_E[3]; +extern TTE var_aTTE[3]; +extern TTAE var_aTTAE[3]; +extern TTAXE var_aTTAXE[3]; + + + +// ========================================= +//AND ALL OF THE ABOVE +// +// ▄▄▄ ▄████ ▄▄▄ ██▓ ███▄ █ +//▒████▄ ██▒ ▀█▒▒████▄ ▓██▒ ██ ▀█ █ +//▒██ ▀█▄ ▒██░▄▄▄░▒██ ▀█▄ ▒██▒▓██ ▀█ ██▒ +//░██▄▄▄▄██ ░▓█ ██▓░██▄▄▄▄██ ░██░▓██▒ ▐▌██▒ +// ▓█ ▓██▒░▒▓███▀▒ ▓█ ▓██▒░██░▒██░ ▓██░ +// ▒▒ ▓▒█░ ░▒ ▒ ▒▒ ▓▒█░░▓ ░ ▒░ ▒ ▒ +// ▒ ▒▒ ░ ░ ░ ▒ ▒▒ ░ ▒ ░░ ░░ ░ ▒░ +// ░ ▒ ░ ░ ░ ░ ▒ ▒ ░ ░ ░ ░ +// ░ ░ ░ ░ ░ ░ ░ +// +// ...for typedefs of arrays, but only TaT* +// ======================================== + + + +// TYPEDEFS OF TYPEDEFS +// ==================== + +// Typedefs of primitive +// --------------------- +extern TaT_P var_TaT_P; + +// typedefs of typedefs of structs +// ------------------------------- +// primitive structs +extern TaT_PS var_TaT_PS; +extern TaTPS var_TaTPS; +extern TaTAPS var_TaTAPS; + +// primitive structs containing arrays +extern TaT_PSIa var_TaT_PSIa; +extern TaTPSIa var_TaTPSIa; +extern TaTAPSIa var_TaTAPSIa; +extern TaT_PSa var_TaT_PSa; +extern TaTPSa var_TaTPSa; +extern TaTAPSa var_TaTAPSa; + +// complex structs +extern TaT_CS var_TaT_CS; +extern TaTCS var_TaTCS; +extern TaTACS var_TaTACS; +extern TaT_CCS var_TaT_CCS; +extern TaTCCS var_TaTCCS; +extern TaTACCS var_TaTACCS; + +// nested structs / hosting structs +extern TaT_HS var_TaT_HS; +extern TaTHS var_TaTHS; +extern TaTAHS var_TaTAHS; +extern TaT_HHS var_TaT_HHS; +extern TaTHHS var_TaTHHS; +extern TaTAHHS var_TaTAHHS; +extern TaT_HS1 var_TaT_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TaT_NCS var_TaT_NCS; + extern TaT_NPS var_TaT_NPS; + extern TaT_NHS var_TaT_NHS; + extern TaT_NNPS var_TaT_NNPS; + extern TaT_NNCS var_TaT_NNCS; + extern TaT_NHS1 var_TaT_NHS1; + extern TaT_NENHS var_TaT_NENHS; + extern TaT_NEHS var_TaT_NEHS; +#endif + +// typedefs of typedefs enums +// -------------------------- +extern TaT_E var_TaT_E; +extern TaTE var_TaTE; +extern TaTAE var_TaTAE; +extern TaTAXE var_TaTAXE; + + + +// TYPEDEFS OF TYPEDEFS +// ==================== + +// Typedefs of primitive +// --------------------- +extern TaT_P var_aTaT_P[3]; + +// typedefs of typedefs of structs +// ------------------------------- +// primitive structs +extern TaT_PS var_aTaT_PS[3]; +extern TaTPS var_aTaTPS[3]; +extern TaTAPS var_aTaTAPS[3]; + +// primitive structs containing arrays +extern TaT_PSIa var_aTaT_PSIa[3]; +extern TaTPSIa var_aTaTPSIa[3]; +extern TaTAPSIa var_aTaTAPSIa[3]; +extern TaT_PSa var_aTaT_PSa[3]; +extern TaTPSa var_aTaTPSa[3]; +extern TaTAPSa var_aTaTAPSa[3]; + +// complex structs +extern TaT_CS var_aTaT_CS[3]; +extern TaTCS var_aTaTCS[3]; +extern TaTACS var_aTaTACS[3]; +extern TaT_CCS var_aTaT_CCS[3]; +extern TaTCCS var_aTaTCCS[3]; +extern TaTACCS var_aTaTACCS[3]; + +// nested structs / hosting structs +extern TaT_HS var_aTaT_HS[3]; +extern TaTHS var_aTaTHS[3]; +extern TaT_HHS var_aTaT_HHS[3]; +extern TaTAHS var_aTaTAHS[3]; +extern TaTHHS var_aTaTHHS[3]; +extern TaTAHHS var_aTaTAHHS[3]; +extern TaT_HS1 var_aTaT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TaT_NCS var_aTaT_NCS[3]; + extern TaT_NPS var_aTaT_NPS[3]; + extern TaT_NHS var_aTaT_NHS[3]; + extern TaT_NNPS var_aTaT_NNPS[3]; + extern TaT_NNCS var_aTaT_NNCS[3]; + extern TaT_NENHS var_aTaT_NENHS[3]; + extern TaT_NHS1 var_aTaT_NHS1[3]; + extern TaT_NEHS var_aTaT_NEHS[3]; +#endif + +// typedefs of typedefs enums +// -------------------------- +extern TaT_E var_aTaT_E[3]; +extern TaTE var_aTaTE[3]; +extern TaTAE var_aTaTAE[3]; +extern TaTAXE var_aTaTAXE[3]; + + + +// FUNCTIONS + +//struct _PS func__PS_V() { +// return var__PS; +//} -TT_NNPS func_TT_NNPS_V() { - return var_TT_NNPS; -} diff --git a/examples/lib/lib_test/main.c b/examples/lib/lib_test/main.c index ef2b4c5..f3e5c2d 100644 --- a/examples/lib/lib_test/main.c +++ b/examples/lib/lib_test/main.c @@ -9,5 +9,5 @@ int main() { TT_HHS a; TT_CCS b; -// printf("%i, %i\n", a.x, a.y); + // printf("%i, %i\n", a.x, a.y); } diff --git a/examples/lib/lib_test/structs.h b/examples/lib/lib_test/structs.h index 2ee60c9..f36d3f7 100644 --- a/examples/lib/lib_test/structs.h +++ b/examples/lib/lib_test/structs.h @@ -1,6 +1,10 @@ #ifndef STRUCTS_H #define STRUCTS_H +#ifdef __cplusplus +extern "C" { +#endif + // Structs // ======= // For structs, a combination is needed to define the type of struct @@ -246,6 +250,9 @@ struct _HS1 { } field__NEHS_1; }; +#ifdef __cplusplus +} +#endif #endif //STRUCTS_H diff --git a/examples/lib/lib_test/typedefs.h b/examples/lib/lib_test/typedefs.h index 412f9a6..5972470 100644 --- a/examples/lib/lib_test/typedefs.h +++ b/examples/lib/lib_test/typedefs.h @@ -4,6 +4,10 @@ #include "structs.h" #include "enums.h" +#ifdef __cplusplus +extern "C" { +#endif + // Typedefs // ======== // Typedefs are simply applied to all defined enums and structs, and the @@ -77,25 +81,28 @@ typedef struct HHS THHS; typedef AHHS TAHHS; // _NNCS = nested nested complex struct typedef struct _NNCS T_NNCS; -// _NENHS = nested enum in nested hosting struct -typedef enum _NENHS T_NENHS; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + typedef enum _NENHS T_NENHS; + typedef enum _NEHS T_NEHS; + // T_IE = typedef of an incomplete enum without an alias + typedef enum _IE T_IE; + // TIE = typedef of an incomplete enum + typedef enum IE TIE; + // TAIE = typedef of an alias of an incomplete enum + typedef AIE TAIE; +#endif + // _NHS1 = nested hosting struct typedef struct _NHS1 T_NHS1; // _NEHS = nested enum in hosting struct typedef struct _HS1 T_HS1; -typedef enum _NEHS T_NEHS; - // typedef enum // ------------ -// T_IE = typedef of an incomplete enum without an alias -typedef enum _IE T_IE; -// TIE = typedef of an incomplete enum -typedef enum IE TIE; -// TAIE = typedef of an alias of an incomplete enum -typedef AIE TAIE; // T_E = typedef of an enum without an alias typedef enum _E T_E; // TE = typedef of an enum @@ -139,13 +146,18 @@ typedef T_NNPS TT_NNPS; typedef THHS TTHHS; typedef TAHHS TTAHHS; typedef T_NNCS TT_NNCS; -typedef T_NENHS TT_NENHS; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + typedef T_NENHS TT_NENHS; + typedef T_NEHS TT_NEHS; + typedef T_IE TT_IE; + typedef TIE TTIE; + typedef TAIE TTAIE; +#endif + typedef T_NHS1 TT_NHS1; typedef T_HS1 TT_HS1; -typedef T_NEHS TT_NEHS; -typedef T_IE TT_IE; -typedef TIE TTIE; -typedef TAIE TTAIE; typedef T_E TT_E; typedef TE TTE; typedef TAE TTAE; @@ -188,10 +200,16 @@ typedef T_NNPS TaT_NNPS[3]; typedef THHS TaTHHS[3]; typedef TAHHS TaTAHHS[3]; typedef T_NNCS TaT_NNCS[3]; -typedef T_NENHS TaT_NENHS[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + typedef T_NENHS TaT_NENHS[3]; + typedef T_NEHS TaT_NEHS[3]; +#endif + typedef T_NHS1 TaT_NHS1[3]; typedef T_HS1 TaT_HS1[3]; -typedef T_NEHS TaT_NEHS[3]; + //typedef T_IE TaT_IE[3]; //typedef TIE TaTIE[3]; //typedef TAIE TaTAIE[3]; @@ -200,5 +218,9 @@ typedef TE TaTE[3]; typedef TAE TaTAE[3]; typedef TAXE TaTAXE[3]; +#ifdef __cplusplus +} +#endif + #endif //TYPEDEFS_H diff --git a/examples/lib/lib_test/vars.h b/examples/lib/lib_test/vars.h index bdd11ff..55f7725 100644 --- a/examples/lib/lib_test/vars.h +++ b/examples/lib/lib_test/vars.h @@ -5,13 +5,17 @@ #include "enums.h" #include "structs.h" +#ifdef __cplusplus +extern "C" { +#endif + // Variables // ========= // _V = Void //void var__V; // _P -char var__P; +extern char var__P; // enums // ===== @@ -19,10 +23,10 @@ char var__P; // enum _IE var__IE; // enum IE var_IE; // AIE var_AIE; -enum _E var__E; -enum E var_E; -AE var_AE; -AXE var_AXE; +extern enum _E var__E; +extern enum E var_E; +extern AE var_AE; +extern AXE var_AXE; // structs @@ -33,50 +37,47 @@ AXE var_AXE; // AIS var_AIS; // primitive structs -struct _PS var__PS; -struct PS var_PS; -APS var_APS; +extern struct _PS var__PS; +extern struct PS var_PS; +extern APS var_APS; // primitive structs containing arrays -struct _PSIa var__PSIa; -struct PSIa var_PSIa; -APSIa var_APSIa; -struct _PSa var__PSa; -struct PSa var_PSa; -APSa var_APSa; +extern struct _PSIa var__PSIa; +extern struct PSIa var_PSIa; +extern APSIa var_APSIa; +extern struct _PSa var__PSa; +extern struct PSa var_PSa; +extern APSa var_APSa; // complex structs -struct _CS var__CS; -struct CS var_CS; -ACS var_ACS; +extern struct _CS var__CS; +extern struct CS var_CS; +extern ACS var_ACS; -struct _CCS var__CCS; -struct CCS var_CCS; -ACCS var_ACCS; +extern struct _CCS var__CCS; +extern struct CCS var_CCS; +extern ACCS var_ACCS; // nested structs / hosting structs -struct _HS var__HS; -struct _NCS var__NCS; - -struct HS var_HS; -struct _NPS var__NPS; -AHS var_AHS; - -struct _HHS var__HHS; -struct _NHS var__NHS; -struct _NNPS var__NNPS; - -struct HHS var_HHS; -struct _NHS1 var__NHS1; -struct _NNCS var__NNCS; - -//nested enum in hosting struct -enum _NENHS var__NENHS; -AHHS var_AHHS; - -struct _HS1 var__HS1; -enum _NEHS var__NEHS; - +extern struct _HS var__HS; +extern AHS var_AHS; +extern struct HS var_HS; +extern struct HHS var_HHS; +extern AHHS var_AHHS; +extern struct _HHS var__HHS; +extern struct _HS1 var__HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern struct _NCS var__NCS; + extern struct _NPS var__NPS; + extern struct _NHS var__NHS; + extern struct _NNPS var__NNPS; + extern struct _NHS1 var__NHS1; + extern struct _NNCS var__NNCS; + extern enum _NENHS var__NENHS; + extern enum _NEHS var__NEHS; +#endif // TYPEDEFS // ======== @@ -84,7 +85,7 @@ enum _NEHS var__NEHS; // Typedefs of primitive // --------------------- //TV var_TV; -T_P var_T_P; +extern T_P var_T_P; // Typedefs of structs // ------------------ @@ -94,44 +95,46 @@ T_P var_T_P; //TAIS var_TAIS; // primitive structs -T_PS var_T_PS; -TPS var_TPS; -TAPS var_TAPS; +extern T_PS var_T_PS; +extern TPS var_TPS; +extern TAPS var_TAPS; // primitive structs containing arrays -T_PSIa var_T_PSIa; -TPSIa var_TPSIa; -TAPSIa var_TAPSIa; -T_PSa var_T_PSa; -TPSa var_TPSa; -TAPSa var_TAPSa; +extern T_PSIa var_T_PSIa; +extern TPSIa var_TPSIa; +extern TAPSIa var_TAPSIa; +extern T_PSa var_T_PSa; +extern TPSa var_TPSa; +extern TAPSa var_TAPSa; // complex structs -T_CS var_T_CS; -TCS var_TCS; -TACS var_TACS; -T_CCS var_T_CCS; -TCCS var_TCCS; -TACCS var_TACCS; +extern T_CS var_T_CS; +extern TCS var_TCS; +extern TACS var_TACS; +extern T_CCS var_T_CCS; +extern TCCS var_TCCS; +extern TACCS var_TACCS; // nested structs / hosting structs -T_HS var_T_HS; -T_NCS var_T_NCS; -THS var_THS; -T_NPS var_T_NPS; -TAHS var_TAHS; -T_HHS var_T_HHS; -T_NHS var_T_NHS; -T_NNPS var_T_NNPS; -THHS var_THHS; -TAHHS var_TAHHS; -T_NNCS var_T_NNCS; -T_NENHS var_T_NENHS; -T_NHS1 var_T_NHS1; - -//nested enum in hosting struct -T_HS1 var_T_HS1; -T_NEHS var_T_NEHS; +extern T_HS var_T_HS; +extern THS var_THS; +extern TAHS var_TAHS; +extern T_HHS var_T_HHS; +extern THHS var_THHS; +extern TAHHS var_TAHHS; +extern T_HS1 var_T_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern T_NENHS var_T_NENHS; + extern T_NCS var_T_NCS; + extern T_NPS var_T_NPS; + extern T_NHS var_T_NHS; + extern T_NNPS var_T_NNPS; + extern T_NNCS var_T_NNCS; + extern T_NHS1 var_T_NHS1; + extern T_NEHS var_T_NEHS; +#endif // Typedef of enums // ---------------- @@ -139,10 +142,10 @@ T_NEHS var_T_NEHS; //T_IE var_TIE; //TIE var_TIE; //TAIE var_TAIE; -T_E var_T_E; -TE var_TE; -TAE var_TAE; -TAXE var_TAXE; +extern T_E var_T_E; +extern TE var_TE; +extern TAE var_TAE; +extern TAXE var_TAXE; @@ -151,56 +154,58 @@ TAXE var_TAXE; // Typedefs of primitive // --------------------- -TT_P var_TT_P; +extern TT_P var_TT_P; // typedefs of typedefs of structs // ------------------------------- // primitive structs -TT_PS var_TT_PS; -TTPS var_TTPS; -TTAPS var_TTAPS; +extern TT_PS var_TT_PS; +extern TTPS var_TTPS; +extern TTAPS var_TTAPS; // primitive structs containing arrays -TT_PSIa var_TT_PSIa; -TTPSIa var_TTPSIa; -TTAPSIa var_TTAPSIa; -TT_PSa var_TT_PSa; -TTPSa var_TTPSa; -TTAPSa var_TTAPSa; +extern TT_PSIa var_TT_PSIa; +extern TTPSIa var_TTPSIa; +extern TTAPSIa var_TTAPSIa; +extern TT_PSa var_TT_PSa; +extern TTPSa var_TTPSa; +extern TTAPSa var_TTAPSa; // complex structs -TT_CS var_TT_CS; -TTCS var_TTCS; -TTACS var_TTACS; -TT_CCS var_TT_CCS; -TTCCS var_TTCCS; -TTACCS var_TTACCS; +extern TT_CS var_TT_CS; +extern TTCS var_TTCS; +extern TTACS var_TTACS; +extern TT_CCS var_TT_CCS; +extern TTCCS var_TTCCS; +extern TTACCS var_TTACCS; // nested structs / hosting structs -TT_HS var_TT_HS; -TT_NCS var_TT_NCS; -TTHS var_TTHS; -TT_NPS var_TT_NPS; -TTAHS var_TTAHS; -TT_HHS var_TT_HHS; -TT_NHS var_TT_NHS; -TT_NNPS var_TT_NNPS; -TTHHS var_TTHHS; -TTAHHS var_TTAHHS; -TT_NNCS var_TT_NNCS; -TT_NENHS var_TT_NENHS; -TT_NHS1 var_TT_NHS1; - -// nested enum in hosting struct -TT_HS1 var_TT_HS1; -TT_NEHS var_TT_NEHS; - -// typedefs of typedefs enums +extern TT_HS var_TT_HS; +extern TTHS var_TTHS; +extern TTAHS var_TTAHS; +extern TT_HHS var_TT_HHS; +extern TTHHS var_TTHHS; +extern TTAHHS var_TTAHHS; +extern TT_HS1 var_TT_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TT_NENHS var_TT_NENHS; + extern TT_NCS var_TT_NCS; + extern TT_NPS var_TT_NPS; + extern TT_NHS var_TT_NHS; + extern TT_NNPS var_TT_NNPS; + extern TT_NNCS var_TT_NNCS; + extern TT_NHS1 var_TT_NHS1; + extern TT_NEHS var_TT_NEHS; +#endif + + // typedefs of typedefs enums // -------------------------- -TT_E var_TT_E; -TTE var_TTE; -TTAE var_TTAE; -TTAXE var_TTAXE; +extern TT_E var_TT_E; +extern TTE var_TTE; +extern TTAE var_TTAE; +extern TTAXE var_TTAXE; @@ -222,7 +227,7 @@ TTAXE var_TTAXE; //void var_a_V; // _P -char var_a_P[3]; +extern char var_a_P[3]; // enums // ===== @@ -230,10 +235,10 @@ char var_a_P[3]; // enum _IE var__IE; // enum IE var_IE; // AIE var_AIE; -enum _E var_a_E[3]; -enum E var_aE[3]; -AE var_aAE[3]; -AXE var_aAXE[3]; +extern enum _E var_a_E[3]; +extern enum E var_aE[3]; +extern AE var_aAE[3]; +extern AXE var_aAXE[3]; // structs @@ -244,50 +249,47 @@ AXE var_aAXE[3]; // AIS var_AIS; // primitive structs -struct _PS var_a_PS[3]; -struct PS var_aPS[3]; -APS var_aAPS[3]; +extern struct _PS var_a_PS[3]; +extern struct PS var_aPS[3]; +extern APS var_aAPS[3]; // primitive structs containing arrays -struct _PSIa var_a_PSIa[3]; -struct PSIa var_aPSIa[3]; -APSIa var_aAPSIa[3]; -struct _PSa var_a_PSa[3]; -struct PSa var_aPSa[3]; -APSa var_aAPSa[3]; +extern struct _PSIa var_a_PSIa[3]; +extern struct PSIa var_aPSIa[3]; +extern APSIa var_aAPSIa[3]; +extern struct _PSa var_a_PSa[3]; +extern struct PSa var_aPSa[3]; +extern APSa var_aAPSa[3]; // complex structs -struct _CS var_a_CS[3]; -struct CS var_aCS[3]; -ACS var_aACS[3]; - -struct _CCS var_a_CCS[3]; -struct CCS var_aCCS[3]; -ACCS var_aACCS[3]; +extern struct _CS var_a_CS[3]; +extern struct CS var_aCS[3]; +extern ACS var_aACS[3]; +extern struct _CCS var_a_CCS[3]; +extern struct CCS var_aCCS[3]; +extern ACCS var_aACCS[3]; // nested structs / hosting structs -struct _HS var_a_HS[3]; -struct _NCS var_a_NCS[3]; - -struct HS var_aHS[3]; -struct _NPS var_a_NPS[3]; -AHS var_aAHS[3]; - -struct _HHS var_a_HHS[3]; -struct _NHS var_a_NHS[3]; -struct _NNPS var_a_NNPS[3]; - -struct HHS var_aHHS[3]; -struct _NHS1 var_a_NHS1[3]; -struct _NNCS var_a_NNCS[3]; - -//nested enum in hosting struct -enum _NENHS var_a_NENHS[3]; -AHHS var_aAHHS[3]; - -struct _HS1 var_a_HS1[3]; -enum _NEHS var_a_NEHS[3]; - +extern struct _HS var_a_HS[3]; +extern struct HS var_aHS[3]; + +extern AHS var_aAHS[3]; +extern struct _HHS var_a_HHS[3]; +extern struct HHS var_aHHS[3]; +extern AHHS var_aAHHS[3]; +extern struct _HS1 var_a_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern struct _NCS var_a_NCS[3]; + extern struct _NPS var_a_NPS[3]; + extern struct _NHS var_a_NHS[3]; + extern struct _NNPS var_a_NNPS[3]; + extern struct _NHS1 var_a_NHS1[3]; + extern struct _NNCS var_a_NNCS[3]; + extern enum _NENHS var_a_NENHS[3]; + extern enum _NEHS var_a_NEHS[3]; +#endif // TYPEDEFS // ======== @@ -295,7 +297,7 @@ enum _NEHS var_a_NEHS[3]; // Typedefs of primitive // --------------------- //TV var_TV; -T_P var_aT_P[3]; +extern T_P var_aT_P[3]; // Typedefs of structs // ------------------ @@ -305,44 +307,46 @@ T_P var_aT_P[3]; //TAIS var_TAIS; // primitive structs -T_PS var_aT_PS[3]; -TPS var_aTPS[3]; -TAPS var_aTAPS[3]; +extern T_PS var_aT_PS[3]; +extern TPS var_aTPS[3]; +extern TAPS var_aTAPS[3]; // primitive structs containing arrays -T_PSIa var_aT_PSIa[3]; -TPSIa var_aTPSIa[3]; -TAPSIa var_aTAPSIa[3]; -T_PSa var_aT_PSa[3]; -TPSa var_aTPSa[3]; -TAPSa var_aTAPSa[3]; +extern T_PSIa var_aT_PSIa[3]; +extern TPSIa var_aTPSIa[3]; +extern TAPSIa var_aTAPSIa[3]; +extern T_PSa var_aT_PSa[3]; +extern TPSa var_aTPSa[3]; +extern TAPSa var_aTAPSa[3]; // complex structs -T_CS var_aT_CS[3]; -TCS var_aTCS[3]; -TACS var_aTACS[3]; -T_CCS var_aT_CCS[3]; -TCCS var_aTCCS[3]; -TACCS var_aTACCS[3]; +extern T_CS var_aT_CS[3]; +extern TCS var_aTCS[3]; +extern TACS var_aTACS[3]; +extern T_CCS var_aT_CCS[3]; +extern TCCS var_aTCCS[3]; +extern TACCS var_aTACCS[3]; // nested structs / hosting structs -T_HS var_aT_HS[3]; -T_NCS var_aT_NCS[3]; -THS var_aTHS[3]; -T_NPS var_aT_NPS[3]; -TAHS var_aTAHS[3]; -T_HHS var_aT_HHS[3]; -T_NHS var_aT_NHS[3]; -T_NNPS var_aT_NNPS[3]; -THHS var_aTHHS[3]; -TAHHS var_aTAHHS[3]; -T_NNCS var_aT_NNCS[3]; -T_NENHS var_aT_NENHS[3]; -T_NHS1 var_aT_NHS1[3]; - -//nested enum in hosting struct -T_HS1 var_aT_HS1[3]; -T_NEHS var_aT_NEHS[3]; +extern T_HS var_aT_HS[3]; +extern THS var_aTHS[3]; +extern TAHS var_aTAHS[3]; +extern T_HHS var_aT_HHS[3]; +extern THHS var_aTHHS[3]; +extern TAHHS var_aTAHHS[3]; +extern T_HS1 var_aT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern T_NENHS var_aT_NENHS[3]; + extern T_NCS var_aT_NCS[3]; + extern T_NPS var_aT_NPS[3]; + extern T_NHS var_aT_NHS[3]; + extern T_NNPS var_aT_NNPS[3]; + extern T_NNCS var_aT_NNCS[3]; + extern T_NHS1 var_aT_NHS1[3]; + extern T_NEHS var_aT_NEHS[3]; +#endif // Typedef of enums // ---------------- @@ -350,10 +354,10 @@ T_NEHS var_aT_NEHS[3]; //T_IE var_aTIE[3]; //TIE var_aTIE[3]; //TAIE var_aTAIE[3]; -T_E var_aT_E[3]; -TE var_aTE[3]; -TAE var_aTAE[3]; -TAXE var_aTAXE[3]; +extern T_E var_aT_E[3]; +extern TE var_aTE[3]; +extern TAE var_aTAE[3]; +extern TAXE var_aTAXE[3]; @@ -362,56 +366,59 @@ TAXE var_aTAXE[3]; // Typedefs of primitive // --------------------- -TT_P var_aTT_P[3]; +extern TT_P var_aTT_P[3]; // typedefs of typedefs of structs // ------------------------------- // primitive structs -TT_PS var_aTT_PS[3]; -TTPS var_aTTPS[3]; -TTAPS var_aTTAPS[3]; +extern TT_PS var_aTT_PS[3]; +extern TTPS var_aTTPS[3]; +extern TTAPS var_aTTAPS[3]; // primitive structs containing arrays -TT_PSIa var_aTT_PSIa[3]; -TTPSIa var_aTTPSIa[3]; -TTAPSIa var_aTTAPSIa[3]; -TT_PSa var_aTT_PSa[3]; -TTPSa var_aTTPSa[3]; -TTAPSa var_aTTAPSa[3]; +extern TT_PSIa var_aTT_PSIa[3]; +extern TTPSIa var_aTTPSIa[3]; +extern TTAPSIa var_aTTAPSIa[3]; +extern TT_PSa var_aTT_PSa[3]; +extern TTPSa var_aTTPSa[3]; +extern TTAPSa var_aTTAPSa[3]; // complex structs -TT_CS var_aTT_CS[3]; -TTCS var_aTTCS[3]; -TTACS var_aTTACS[3]; -TT_CCS var_aTT_CCS[3]; -TTCCS var_aTTCCS[3]; -TTACCS var_aTTACCS[3]; +extern TT_CS var_aTT_CS[3]; +extern TTCS var_aTTCS[3]; +extern TTACS var_aTTACS[3]; +extern TT_CCS var_aTT_CCS[3]; +extern TTCCS var_aTTCCS[3]; +extern TTACCS var_aTTACCS[3]; // nested structs / hosting structs -TT_HS var_aTT_HS[3]; -TT_NCS var_aTT_NCS[3]; -TTHS var_aTTHS[3]; -TT_NPS var_aTT_NPS[3]; -TTAHS var_aTTAHS[3]; -TT_HHS var_aTT_HHS[3]; -TT_NHS var_aTT_NHS[3]; -TT_NNPS var_aTT_NNPS[3]; -TTHHS var_aTTHHS[3]; -TTAHHS var_aTTAHHS[3]; -TT_NNCS var_aTT_NNCS[3]; -TT_NENHS var_aTT_NENHS[3]; -TT_NHS1 var_aTT_NHS1[3]; - -// nested enum in hosting struct -TT_HS1 var_aTT_HS1[3]; -TT_NEHS var_aTT_NEHS[3]; +extern TT_HS var_aTT_HS[3]; +extern TTHS var_aTTHS[3]; +extern TTAHS var_aTTAHS[3]; +extern TT_HHS var_aTT_HHS[3]; +extern TTHHS var_aTTHHS[3]; +extern TTAHHS var_aTTAHHS[3]; +extern TT_HS1 var_aTT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TT_NENHS var_aTT_NENHS[3]; + extern TT_NCS var_aTT_NCS[3]; + extern TT_NPS var_aTT_NPS[3]; + extern TT_NHS var_aTT_NHS[3]; + extern TT_NNPS var_aTT_NNPS[3]; + extern TT_NNCS var_aTT_NNCS[3]; + extern TT_NHS1 var_aTT_NHS1[3]; + extern TT_NEHS var_aTT_NEHS[3]; +#endif + // typedefs of typedefs enums // -------------------------- -TT_E var_aTT_E[3]; -TTE var_aTTE[3]; -TTAE var_aTTAE[3]; -TTAXE var_aTTAXE[3]; +extern TT_E var_aTT_E[3]; +extern TTE var_aTTE[3]; +extern TTAE var_aTTAE[3]; +extern TTAXE var_aTTAXE[3]; @@ -438,56 +445,58 @@ TTAXE var_aTTAXE[3]; // Typedefs of primitive // --------------------- -TaT_P var_TaT_P; +extern TaT_P var_TaT_P; // typedefs of typedefs of structs // ------------------------------- // primitive structs -TaT_PS var_TaT_PS; -TaTPS var_TaTPS; -TaTAPS var_TaTAPS; +extern TaT_PS var_TaT_PS; +extern TaTPS var_TaTPS; +extern TaTAPS var_TaTAPS; // primitive structs containing arrays -TaT_PSIa var_TaT_PSIa; -TaTPSIa var_TaTPSIa; -TaTAPSIa var_TaTAPSIa; -TaT_PSa var_TaT_PSa; -TaTPSa var_TaTPSa; -TaTAPSa var_TaTAPSa; +extern TaT_PSIa var_TaT_PSIa; +extern TaTPSIa var_TaTPSIa; +extern TaTAPSIa var_TaTAPSIa; +extern TaT_PSa var_TaT_PSa; +extern TaTPSa var_TaTPSa; +extern TaTAPSa var_TaTAPSa; // complex structs -TaT_CS var_TaT_CS; -TaTCS var_TaTCS; -TaTACS var_TaTACS; -TaT_CCS var_TaT_CCS; -TaTCCS var_TaTCCS; -TaTACCS var_TaTACCS; +extern TaT_CS var_TaT_CS; +extern TaTCS var_TaTCS; +extern TaTACS var_TaTACS; +extern TaT_CCS var_TaT_CCS; +extern TaTCCS var_TaTCCS; +extern TaTACCS var_TaTACCS; // nested structs / hosting structs -TaT_HS var_TaT_HS; -TaT_NCS var_TaT_NCS; -TaTHS var_TaTHS; -TaT_NPS var_TaT_NPS; -TaTAHS var_TaTAHS; -TaT_HHS var_TaT_HHS; -TaT_NHS var_TaT_NHS; -TaT_NNPS var_TaT_NNPS; -TaTHHS var_TaTHHS; -TaTAHHS var_TaTAHHS; -TaT_NNCS var_TaT_NNCS; -TaT_NENHS var_TaT_NENHS; -TaT_NHS1 var_TaT_NHS1; - -// nested enum in hosting struct -TaT_HS1 var_TaT_HS1; -TaT_NEHS var_TaT_NEHS; +extern TaT_HS var_TaT_HS; +extern TaTHS var_TaTHS; +extern TaTAHS var_TaTAHS; +extern TaT_HHS var_TaT_HHS; +extern TaTHHS var_TaTHHS; +extern TaTAHHS var_TaTAHHS; +extern TaT_HS1 var_TaT_HS1; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TaT_NCS var_TaT_NCS; + extern TaT_NPS var_TaT_NPS; + extern TaT_NHS var_TaT_NHS; + extern TaT_NNPS var_TaT_NNPS; + extern TaT_NNCS var_TaT_NNCS; + extern TaT_NHS1 var_TaT_NHS1; + extern TaT_NENHS var_TaT_NENHS; + extern TaT_NEHS var_TaT_NEHS; +#endif // typedefs of typedefs enums // -------------------------- -TaT_E var_TaT_E; -TaTE var_TaTE; -TaTAE var_TaTAE; -TaTAXE var_TaTAXE; +extern TaT_E var_TaT_E; +extern TaTE var_TaTE; +extern TaTAE var_TaTAE; +extern TaTAXE var_TaTAXE; @@ -496,55 +505,62 @@ TaTAXE var_TaTAXE; // Typedefs of primitive // --------------------- -TaT_P var_aTaT_P[3]; +extern TaT_P var_aTaT_P[3]; // typedefs of typedefs of structs // ------------------------------- // primitive structs -TaT_PS var_aTaT_PS[3]; -TaTPS var_aTaTPS[3]; -TaTAPS var_aTaTAPS[3]; +extern TaT_PS var_aTaT_PS[3]; +extern TaTPS var_aTaTPS[3]; +extern TaTAPS var_aTaTAPS[3]; // primitive structs containing arrays -TaT_PSIa var_aTaT_PSIa[3]; -TaTPSIa var_aTaTPSIa[3]; -TaTAPSIa var_aTaTAPSIa[3]; -TaT_PSa var_aTaT_PSa[3]; -TaTPSa var_aTaTPSa[3]; -TaTAPSa var_aTaTAPSa[3]; +extern TaT_PSIa var_aTaT_PSIa[3]; +extern TaTPSIa var_aTaTPSIa[3]; +extern TaTAPSIa var_aTaTAPSIa[3]; +extern TaT_PSa var_aTaT_PSa[3]; +extern TaTPSa var_aTaTPSa[3]; +extern TaTAPSa var_aTaTAPSa[3]; // complex structs -TaT_CS var_aTaT_CS[3]; -TaTCS var_aTaTCS[3]; -TaTACS var_aTaTACS[3]; -TaT_CCS var_aTaT_CCS[3]; -TaTCCS var_aTaTCCS[3]; -TaTACCS var_aTaTACCS[3]; +extern TaT_CS var_aTaT_CS[3]; +extern TaTCS var_aTaTCS[3]; +extern TaTACS var_aTaTACS[3]; +extern TaT_CCS var_aTaT_CCS[3]; +extern TaTCCS var_aTaTCCS[3]; +extern TaTACCS var_aTaTACCS[3]; // nested structs / hosting structs -TaT_HS var_aTaT_HS[3]; -TaT_NCS var_aTaT_NCS[3]; -TaTHS var_aTaTHS[3]; -TaT_NPS var_aTaT_NPS[3]; -TaTAHS var_aTaTAHS[3]; -TaT_HHS var_aTaT_HHS[3]; -TaT_NHS var_aTaT_NHS[3]; -TaT_NNPS var_aTaT_NNPS[3]; -TaTHHS var_aTaTHHS[3]; -TaTAHHS var_aTaTAHHS[3]; -TaT_NNCS var_aTaT_NNCS[3]; -TaT_NENHS var_aTaT_NENHS[3]; -TaT_NHS1 var_aTaT_NHS1[3]; - -// nested enum in hosting struct -TaT_HS1 var_aTaT_HS1[3]; -TaT_NEHS var_aTaT_NEHS[3]; +extern TaT_HS var_aTaT_HS[3]; +extern TaTHS var_aTaTHS[3]; +extern TaT_HHS var_aTaT_HHS[3]; +extern TaTAHS var_aTaTAHS[3]; +extern TaTHHS var_aTaTHHS[3]; +extern TaTAHHS var_aTaTAHHS[3]; +extern TaT_HS1 var_aTaT_HS1[3]; + +// FORBIDDEN IN C++ +#ifndef __cplusplus + extern TaT_NCS var_aTaT_NCS[3]; + extern TaT_NPS var_aTaT_NPS[3]; + extern TaT_NHS var_aTaT_NHS[3]; + extern TaT_NNPS var_aTaT_NNPS[3]; + extern TaT_NNCS var_aTaT_NNCS[3]; + extern TaT_NENHS var_aTaT_NENHS[3]; + extern TaT_NHS1 var_aTaT_NHS1[3]; + extern TaT_NEHS var_aTaT_NEHS[3]; +#endif // typedefs of typedefs enums // -------------------------- -TaT_E var_aTaT_E[3]; -TaTE var_aTaTE[3]; -TaTAE var_aTaTAE[3]; -TaTAXE var_aTaTAXE[3]; +extern TaT_E var_aTaT_E[3]; +extern TaTE var_aTaTE[3]; +extern TaTAE var_aTaTAE[3]; +extern TaTAXE var_aTaTAXE[3]; + + +#ifdef __cplusplus +} +#endif #endif // VARS_H