Hallo,
neulich wollte ich viele meiner C-Funktionen in C++-Klassen umschreiben,
damit der Code etwas übersichtlicher wird. Da beim Compilieren viele
Fehlermeldungen kamen, sobald ich virtuelle Member hatte, habe ich nach
einer Empfehlung aus diesem Forum den Code aus dem Examples-Ordner von
WinARM genommen (lpc2129_newlib_cpp), wo virtuelle Methoden vorhanden
sind und es compillierte fehlerfrei. Als ich dann den Code
"minimalisiert" habe, waren die Fehlermeldungen wieder da, also hab ich
dann wieder den alten Code genommen und Stück für Stück Zeilen
rausgenommen habe, bis folgendes entstand:
1 | #include <stdio.h>
|
2 | #include <arch/philips/newlib-lpc/lpc2119.h>
|
3 | #include <arch/philips/newlib-lpc/dev_cntrl.h>
|
4 |
|
5 | /**** Device table. List of device drivers for newlib. ****/
|
6 | const struct device_table_entry *device_table[] = {
|
7 | &com1,
|
8 | &com1,
|
9 | &com1,
|
10 | 0 };
|
11 |
|
12 | extern "C" int isatty(int fd)
|
13 | {
|
14 | return 1;
|
15 | }
|
16 |
|
17 | class mach
|
18 | {
|
19 | public:
|
20 | virtual void tu()
|
21 | {
|
22 | }
|
23 |
|
24 | virtual ~mach()
|
25 | {
|
26 | }
|
27 | };
|
28 |
|
29 | class machh: public mach
|
30 | {
|
31 | public:
|
32 | void tu()
|
33 | {
|
34 | }
|
35 | };
|
36 |
|
37 | /********************* main *********************************************/
|
38 | /* main -- program start point. Simple echo program with some timing */
|
39 | /* tests thrown in. */
|
40 | int main( void)
|
41 | {
|
42 | iprintf("Ups - Superclass has no draw.\n");
|
43 | machh m;
|
44 | m.tu();
|
45 | return 0;
|
46 |
|
47 | }
|
Ich verstehe aber nicht wofür ich diese Zeilen brauche:
-iprintf("Ups - Superclass has no draw.\n"); in der main. Wenn ich es
entferne, kommen lauter Meldungen über undefinierten Referenzen zu z.b.
'_sbrk_r', `_fstat_r', `_close_r' usw. Wie kann das überahaupt sein, das
ist ja nur ein Aufruf und keine Deklaration?
-const struct device_table_entry *device_table[] = { ... Wenn ich es
entferne, kommen Meldungen über undefinierte Referenzen zu
device_table[]. Was ist die device_table und wofür braucht man die?
-#include <arch/philips/newlib-lpc/dev_cntrl.h> Da ist com1 definiert,
das für die device_table gebraucht wird.
-extern "C" int isatty(int fd) - Wofür ist die Funktion, wenn sie immer
nur 1 zurückgibt?
Zudem verstehe ich nicht, woher die fast 50k .text und 2148 Bytes .bss
kommen.
Kann bitte jemand meine Fragen zumindest teilweise beantworten?
MfG Mark