Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

282
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!