In linguaggio C, cosa significa bandiera? È un nome di variabile arbitrario? Posso usare flag = 2 o b etc?

Come molti altri hanno notato: la nozione di “flag” in programmazione non è specifica per C. È uno stato binario memorizzato. Spesso svolge un ruolo simile alle bandierine attaccate alle cassette postali residenziali statunitensi:

Spostare quel flag “su” indica la presenza di posta. Allo stesso modo, la bandiera di un programmatore indica spesso la “presenza” di un’attività da svolgere, ma il termine è usato più in generale per qualsiasi stato booleano.

In C, i tipi comuni per un flag sono varianti int e char , ma poiché C99 tipo _Bool è disponibile specificamente per rappresentare lo stato binario. Per esempio:

  _Bool new_info_flag = 0;

Se si include viene fornito un macro bool come sinonimo di _Bool , così come le macro true e false per rappresentare i due valori binari (equivalenti a 1 e 0, rispettivamente):

  #include 
 bool new_info_flag = false;

Nei tipi di struttura, i flag sono spesso ridotti a campi di bit a bit singolo:

  nodo nodo {
   // ...
   unsigned int needs_refresh_flag: 1;
 };

Questo è probabilmente l’uso più comune dei campi di bit (non sono sicuro che sia vero, ma è vero nel codice con cui mi occupo).

A volte, più flag vengono impacchettati manualmente in variabili intere:

  enum {
   refresh_flag = 0x1,
   broadcast_flag = 0x2,
   split_flag = 0x4,
   flush_flag = 0x8
 };
 ...
 void func (flag unsigned, nodo Nodo * *) {
   if (flags & refresh_flag) {
     refresh (nodo);
   }
   if (flags & split_flag) {
     raggruppati (nodo);
   }
   ...
 }

Vedi altre risposte nelle bandiere in generale, anche per C. Questa risposta riguarda meno C come lingua , che il processo di compilazione e le bandiere lì.

I flag C vengono utilizzati durante il processo di compilazione. Vengono utilizzati quando si richiama il compilatore c. I CFlags sono più comunemente usati nei Makefile. Nel caso in cui tu non sia quello che sono i Makefile, ecco un bell’articolo che spiega tutto per conto mio: Makefile

Una volta che hai capito cos’è un Makefile, sei più adatto a capire quali sono le bandiere. I CFlags sono usati per aggiungere switch al compilatore C.

Ecco come compileresti un programma su bash (o terminale) con il compilatore gcc

  gcc -g -Wall helloworld.c -o helloworld

Il mio Makefile sarebbe simile a questo:

  TARGET = helloworld
 CFLAGS = -Wall -g
 tutti: 
	 gcc $ (CFLAGS) $ (TARGET) .c -o $ (TARGET)
 pulito:
	 rm $ (TARGET)

Dalla riga 3, $ (CFLAGS) è sostituito da “-Wall -g”. Detto questo, qui ci sono CFlags che puoi usare per il debug: Usare la GNU Compiler Collection (GCC). Ecco di più sull’ottimizzazione: usare GNU Compiler Collection (GCC).

Spero che lo trovi utile

Un flag è un concetto generale in qualsiasi lingua (non specifico di C o linguaggio assembly), per specificare uno stato binario (vedere altre risposte).

Sull’assembly (che potresti essere in grado di usare in C con la parola chiave asm (vedi ad es. Uso del linguaggio assembly con C e dichiarazione asm – cppreference.com):

Per un microprocessore 8085 (o qualsiasi x86 compatibile con esso) vedi un registro Flag. Questo registro flag contiene varie informazioni che possono aiutare il microprocessore a manipolare cose come se fosse impostato zero flag allora JZ è vero. Allo stesso modo se il flag Carry è impostato e JZ è falso nel confronto tra due variabili aeb, quindi a

Fammi sapere cosa vuoi sapere sulla bandiera in c? Immagino che i flag in c siano variabili che vengono utilizzate dagli utenti per eseguire calcoli logici per la risoluzione di un problema in modo da poter nominare anche le variabili di conseguenza.

Anche i flag rappresentano true (1) e false (0) ma in un linguaggio di alto livello, puoi rappresentare ancora più stati come 0,1,2,3, … HB