Articles of const

C – Accéder à une déclaration non-const via const

L’access à un object non const via une déclaration const autorisé par le standard C? Par exemple, le code suivant est-il garanti pour la compilation et la sortie 23 et 42 sur une plate-forme conforme aux normes? unité de traduction A: int a = 23; void foo(void) { a = 42; } unité de traduction […]

Comment définissez-vous une constante en C?

J’essaie de construire un commutateur et j’obtiens une “expression doit être de type intégral ou enum”. Je suppose que le commutateur dans Winapi ne prend pas les variables de type LPSTR? char testbuf[ 51 ]; // allocate space for 50 characters + termination LPSTR test = testbuf; scanf(“%50s”, test); // read at most 50 characters […]

Pourquoi est-il permis d’écraser une variable const en utilisant un pointeur sur memcpy?

Pourquoi est-il permis de changer une variable const en utilisant un pointeur sur memcpy? Ce code: const int i=5; int j = 0; memcpy(&j, &i, sizeof(int)); printf(“Source: i = %d, dest: j = %d\n”, i,j); j = 100; memcpy(&i, &j, sizeof(int)); printf(“Source: j = %d, dest: i = %d\n”, j,i); return 0; compilé avec juste […]

pointeur constant corrigé sur une variable variable

Je n’arrive pas à comprendre comment dire à C que je veux un pointeur qui ne bougera pas. Cela indiquera toujours le même tableau. Cela dit, les membres du tableau ne sont pas constants, mais le tableau lui-même est global et est donc à une position fixe. Alors, quand je code ceci: #include int v[2]={0, […]

C: Comportement du mot clé `const`

On m’a dit que si je codais en ANSI-C pour déclarer dans l’ordre d’utilisation des variables, affirmer que les pointeurs ne sont pas nuls et que les index sont dans les limites, et s’initialiser juste avant l’utilisation de la variable. Si je déclare un const, puis-je l’initialiser après un bloc d’assertions et de code? En […]

Tableau constant d’objects constants

Comment définissez-vous un tableau constant d’objects constants en C (pas C ++)? Je peux définir int const Array [] = { /* init data here */ }; mais c’est un tableau non constant d’objects constants. je pourrais utiliser int const * const Array = { /* init data here */ }; et cela fonctionnerait probablement. […]

Changer la valeur de const int en utilisant using pointeur

J’ai écrit un programme C en gcc et cela me donne une sortie très inattendue. Le code est: #include int main(){ const int x=10; int *p=&x; *p=11; printf(“%d\n”,*p); printf(“%d”,x); printf(“\n%u\n”,p); printf(“%u”, &x); } Ici la sortie est: 11 dix 37814068 37814068 Pourquoi p et & x donnent la même adresse (37814068) mais des valeurs différentes […]

Comment éliminer l’avertissement de passer tableau multidimensionnel en tant que tableau multidimensionnel const?

étant donné le code suivant: /* signatures */ int getParams(char params[MAX_PARAM_LEN][MAX_LINE_LEN]); int getVersion(const char params[MAX_PARAM_LEN][MAX_LINE_LEN], const char* tagName ); /* initializing */ char params[MAX_PARAM_LEN][MAX_LINE_LEN] = {}; /* getting parameters */ paramCount = getParams(params); /* OK, params match with getParams signature */ /* processing the params array */ i = getVersion(params, “version”); /* warning: passing arg […]

Pourquoi la conversion implicite de non-const en const ne se produit-elle pas ici?

Dupliquer possible: pourquoi n’est-il pas légal de convertir (pointeur en pointeur en non-const) en un pointeur Avertissements de correction de double pointeur en C Je passe un gchar** à un g_key_file_set_ssortingng_list qui attend un const gchar * const identifier [] /* this function is part of the GLib library */ void g_key_file_set_ssortingng_list(GKeyFile *key_file, const gchar […]

Comment les macros chaînées sont-elles résolues en C?

Si je veux utiliser les instructions du préprocesseur #define pour faciliter la définition et le calcul des constantes et des fonctions communes, et tirer parti de moins de charge de mémoire vive (par opposition à l’utilisation de valeurs const ). Cependant, je ne sais pas comment ils sont résolus si plusieurs macros sont utilisées ensemble. […]