Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

293
Vistas
Inicializar una bandera atómica en una estructura malloc'd

Estoy tratando de usar atomics en C en FreeBSD 10.1 Release con clang 3.6.1, sin embargo, cuando intento compilar un programa usando ATOMIC_FLAG_INIT en una variable atomic_flag en una struct , aparece el error: expected expression .

Aquí está el programa que estoy tratando de compilar.

 #include <stdio.h> #include <stdatomic.h> struct map { atomic_flag flag; }; int main(void) { struct map *m = malloc(sizeof(struct map)); m->flag = ATOMIC_FLAG_INIT; free(m); return 0; }

Puedo usar atomic_flag fuera de las structs como en el ejemplo a continuación, pero no en las structs , entonces, ¿cómo se usan las variables atómicas en las structs C ?

 #include <stdio.h> #include <stdatomic.h> int main(void) { atomic_flag flag = ATOMIC_FLAG_INIT; return 0; }
over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

atomic_flag no tiene un valor que pueda asignar o leer, sino solo un estado interno.

La única forma de interactuar con atomic_flag son las dos funciones (o cuatro si cuentas las versiones _explicit ) que se definen para él. Para su caso, cuando obtuvo su objeto a través de malloc , la bandera está en un "estado indeterminado" (7.17.8 p4 de C11). Simplemente puede ponerlo en un estado conocido aplicando una de las dos funciones, es decir, usar atomic_flag_clear para configurarlo en el estado "clear", o usar atomic_flag_test_and_set para configurarlo en el estado "set".

Usar atomic_flag_clear justo después de una asignación con malloc es equivalente a inicializar una variable con ATOMIC_FLAG_INIT .

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda