I want to do something like this in plain C:
struct data_msg {
uint8_t id = 25;
uint8_t data1;
uint32_t data2;
}
I need the id to be set to 25 by default so that when I create an instance of the struct, the id is already set to 25, like this:
struct data_msg tmp_msg;
printf("ID: %d", tmp_msg.id); // outputs ID: 25
Is there a way to do this in C? I know it can be done in C , but have not figured a way in C.
Doing this in C will throw errors:
struct data_msg { uint8_t id = 25; }
CodePudding user response:
Unfortunately, you can't, but if you do this a lot, you could create a constant that you use for initialization:
struct data_msg {
uint8_t id;
uint8_t data1;
uint32_t data2;
};
const struct data_msg dm_init = {.id = 25};
int main(void) {
struct data_msg var = dm_init; // var.id is now 25, data1 = 0, data2 = 0
// ...
}
CodePudding user response:
The C standard does not provide any feature for this. You may set initial values when defining an object, but there is no provision for setting default or initial values when defining a type.