Forum: Compiler & IDEs struct referenzieren


von Fabio S. (codehamster)


Lesenswert?

Hallo zusammen,
ich stehe gerade auf der Leitung. Mein Compiler gibt folgende Warnung 
aus:
1
[warning] parameter `struct time_typ end_period' is not referenced
2
[warning] parameter `struct time_typ start_period' is not referenced

kann mir bitte jemand sagen wie ich das korrekt mache?

File: logger.h
1
void logger_vmd_title(int16 operator_code, int16 total_copies,
2
int08 vmd_status, struct time_typ start_period, 
3
struct time_typ end_period,int08 titlecode_report);

File: logger.c
1
void logger_vmd_title(int16 operator_code, int16 total_copies,
2
int08 vmd_status, struct time_typ start_period, 
3
struct time_typ end_period, int08 titlecode_report)
4
{
5
    int08 buffer[LOGGER_BUFFER_SIZE];
6
7
    // Buffer löschen
8
    logger_clear_buffer(buffer);
9
10
    // Teil 1 des Logeintrag zusammenstellen
11
    // Eintrag Typ
12
    buffer[0] = 0x20;
13
    // Ende der Verkaufsperiode
14
    buffer[1] = end_period.year;
15
    buffer[2] = end_period.month;
16
    buffer[3] = end_period.day;
17
    buffer[4] = end_period.hour;
18
    buffer[5] = end_period.minute;
19
    buffer[6] = end_period.second;
20
    // Operator Code
21
    buffer[8] = operator_code;
22
    operator_code = operator_code >> 8;
23
    buffer[7] = operator_code;
24
    // Start der Verkaufsperiode
25
    buffer[9] = start_period.year;
26
    buffer[10] = start_period.month;
27
    buffer[11] = start_period.day;
28
    buffer[12] = start_period.hour;
29
    buffer[13] = start_period.minute;
30
    buffer[14] = start_period.second;
31
    // Checksum
32
    buffer[15] = byte_checksum_8bit(buffer, 15);
33
34
    // Datensatz im SiteMemory ablegen
35
    sitememory_logger_buffer_in(buffer);
36
37
    // Buffer löschen
38
    logger_clear_buffer(buffer);
39
40
    // Teil 2 des Logeintrag zusammenstellen
41
    // Eintrag Typ
42
    buffer[0] = 0x21;
43
    // Titel Code
44
    buffer[5] = titlecode_report;
45
    // Total Verkaufte Exemplare
46
    buffer[6] = byte_bin_to_bcd(total_copies / 100);
47
    buffer[7] = byte_bin_to_bcd(total_copies % 100);
48
    // VMD Status
49
    buffer[9] = vmd_status;
50
    // Checksum
51
    buffer[15] = byte_checksum_8bit(buffer, 15);
52
53
    // Datensatz im SiteMemory ablegen
54
    sitememory_logger_buffer_in(buffer);
55
}

Aufruf:
1
logger_vmd_title(vpd_operator_name, copies, status, start_vmd_periode, now,vmd_titlecode_report[box_no] );

von Andreas B. (Gast)


Lesenswert?

Ich vermute mal, der Compiler warnt davor, dass die structs komplett 
übergeben werden und dadurch jeweils eine zweite Kopie angelegt werden 
muss. Ist natürlich kein Fehler, kostet aber Performance.

Lösung wäre, statt dessen nur Zeiger auf die structs zu übergeben. Am 
besten const, denn die Strukturen werden nicht gelesen.

von Fabio S. (codehamster)


Lesenswert?

Hallo Andreas,

Danke vielmals! Das wars!

MFG Fabio

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.