Ich würde gerne in einem C-Modul für einen Hardware-Treiber eine public
Struktur deklarieren, die wiederum eine Struktur enthält, welche
allerdings privat ist.
Geht sowas in C überhaupt?
Ich habe folgendes probiert, aber das funktioniert nicht, da die Public
Deklaration im Header ja noch nichts von dem Private typedef weiß:
1 | /**
|
2 | * driver.h
|
3 | */
|
4 | typedef struct driver_class
|
5 | {
|
6 | void attribute_1;
|
7 | void attrivute_2;
|
8 | driver_hardware_t hardware;
|
9 | } driver_class_t;
|
10 |
|
11 |
|
12 | /**
|
13 | * driver.c
|
14 | */
|
15 | #include driver.h
|
16 |
|
17 | typedef struct driver_hardware_t
|
18 | {
|
19 | void* pHWModule1;
|
20 | void* pHWModule2;
|
21 | }
|
22 |
|
23 | /**
|
24 | * main.c
|
25 | */
|
26 | #include driver.h
|
27 |
|
28 | void main(void)
|
29 | {
|
30 | driver_class_t instance;
|
31 | }
|
Die Private typedef muss nicht unbedingt eine Struktur sein, eine
eifache Hardware-Adresse reicht evtl. auch. Aber hier nehmen wir an,
dass der HW Treiber 2 Peripherie-Module ansprechen muss, z.B. Timer und
ADC.