Beste PRGers,
Momenteel zit ik met een uitdaging. Ik heb een struct gedefineerd:
Deze wordt natuurlijk ook gebruikt
Nu itereer ik in een loopje over de array heen:
Een van de vier assignments van de variabele led hierboven moet doen wat ik wil. Namelijk:
De pointer mag niet reassigned worden, maar de inhoud van de struct (pointer) mag wel gewijzigd worden.
Ik heb ze alle vier geprobeerd, maar ik krijg (met uitzondering van de bovenste) de volgende foutmelding van gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
gpio_leds.c:250: error: assignment of read-only location ‘*led’
Ik kwam op mijn zoektocht naar deze foutmelding de volgende post tegen, maar de uitleg daar lijkt niet te stroken met de resultaten uit mijn compiler.
Ik had namelijk verwacht dat derde assignment doet wat ik zou willen.
Matis
Momenteel zit ik met een uitdaging. Ik heb een struct gedefineerd:
C:
1
2
3
4
5
6
7
| typedef struct t_gpio_led { char* base_name; uint32_t flags; uint32_t colors; uint32_t pc; } gpio_led; |
Deze wordt natuurlijk ook gebruikt
C:
1
2
| #define MAX_NUM_GPIO_LEDS 0x20 static gpio_led leds[MAX_NUM_GPIO_LEDS]; |
Nu itereer ik in een loopje over de array heen:
C:
1
2
3
4
5
6
7
8
9
10
11
| int idx; for (idx = 0; idx < num_active_leds; idx++) { gpio_led *led = &(leds[idx]); const gpio_led *led = &(leds[idx]); gpio_led const *led = &(leds[idx]); const gpio_led const *led = &(leds[idx]); .... /* Op onderstaande regel gaat het 3 uit 4 keer fout */ led->flags |= GPIO_LED_FLG_PROCESSED; } |
Een van de vier assignments van de variabele led hierboven moet doen wat ik wil. Namelijk:
De pointer mag niet reassigned worden, maar de inhoud van de struct (pointer) mag wel gewijzigd worden.
Ik heb ze alle vier geprobeerd, maar ik krijg (met uitzondering van de bovenste) de volgende foutmelding van gcc (Ubuntu 4.4.3-4ubuntu5.1) 4.4.3
gpio_leds.c:250: error: assignment of read-only location ‘*led’
Ik kwam op mijn zoektocht naar deze foutmelding de volgende post tegen, maar de uitleg daar lijkt niet te stroken met de resultaten uit mijn compiler.
Ik had namelijk verwacht dat derde assignment doet wat ik zou willen.
Wie kan me verder helpen?char* const the_string : I cannot change the char to which the_string points, but I can modify the char at which it points
Matis
[ Voor 8% gewijzigd door Matis op 14-08-2013 11:30 ]
If money talks then I'm a mime
If time is money then I'm out of time