Определенно возможно, да.
Вам нужно быть осторожным и убедиться, что код, который его использует, знает, что некоторые поля могут быть недоступны до того, как они будут выделены. То есть сначала проверьте, являются ли они NULL
, вместо прямого доступа к ним.
Вы можете объявить структуру с явным инициализатором, чтобы было очевидно, что происходит:
struct test foo = {
.a = 123,
.data = NULL // Initialized by function X when Y
};
EXPORT_SYMBOL(foo);
Если такие поля являются обязательными для используемой структуры, вы можете захотеть инициализировать их на ранней стадии (см. здесь ).