¿Existe alguna forma de pasar una estructura local como argumento a una función en C (C11)?
Tengo una función (attempt_volume_exchange_move
) en la que defino una estructura (status
). Quiero pasar las variables status
a una función que llamo dentro de attempt_volume_exchange_move
(store_box_properties
). Al intentar escribir el código para store_box_properties
, recibo el siguiente mensaje de advertencia en CLion:
La declaración de ‘struct status’ no será visible fuera de esta función.
El código que ilustra mi problema sigue a continuación:
struct boxes {
// Miembro 1
// Miembro 2
// Miembro 3
// ...
// Miembro N
} box_dense, box_rare;
void attempt_volume_exchange_move(void) {
struct status {
struct boxes box_dense, box_rare;
} original, new;
store_box_properties(&original.box_dense);
store_box_properties(&original.box_rare);
}
void store_box_properties(struct status *status_pointer) { // Línea donde se da el mensaje de advertencia
// Código para store_box_properties
}
¿Cómo puedo abordar este problema? Pensé en hacer de status
una estructura global; sin embargo, eso parece ser inútil ya que la definición de status
solo tiene sentido dentro del alcance de attempt_volume_exchange_move
. Estoy tratando de abordar esto de la manera más “correcta”/”apropiada”/”elegante” posible.
¡Gracias de antemano por cualquier idea!
davy.ai
Para abordar este problema, puede hacer que “estado” sea un parámetro de la función “store_box_properties”. De esta manera, la estructura “estado” será visible para la función “store_box_properties”. El código se vería así: