Articles of gcc

Dois-je comstackr les fichiers d’en-tête dans un programme C?

Parfois, je vois quelqu’un comstackr un programme C comme ceci: gcc -o hello hello.c hello.h Comme je le sais, il suffit de placer les fichiers d’en-tête dans le programme C comme: #include “somefile” et comstackr le programme C: gcc -o hello hello.c . Quand devons-nous comstackr les fichiers d’en-tête ou pourquoi?

Pourquoi cette variable inutilisée n’est-elle pas optimisée?

J’ai joué avec ComstackrExplorer de Godbolt. Je voulais voir à quel point certaines optimisations sont bonnes. Mon exemple de travail minimum est: #include int foo() { std::vector v {1, 2, 3, 4, 5}; return v[4]; } L’assembleur généré (par clang 5.0.0, -O2 -std = c ++ 14): foo(): # @foo() push rax mov edi, 20 […]

Le comportement “char foo = 255” est-il indéfini si le caractère est signé?

Ce qui suit ne me donne aucun avertissement lors de la compilation avec gcc 4.5.2 sur une machine x86 avec Linux: char foo = 255; Mais quand j’utilise -pedantic , gcc dit: avertissement: débordement dans la conversion constante implicite La façon dont gcc agit est un peu étrange et cela me fait douter si je […]

Les structures emballées sont-elles portables?

J’ai du code sur un microcontrôleur Cortex-M4 et je souhaite communiquer avec un PC en utilisant un protocole binary. Actuellement, j’utilise des structures compressées utilisant l’atsortingbut packed spécifique à GCC. Voici un aperçu: struct Sensor1Telemetry { int16_t temperature; uint32_t timestamp; uint16_t voltageMv; // etc… } __atsortingbute__((__packed__)); struct TelemetryPacket { Sensor1Telemetry tele1; Sensor2Telemetry tele2; // etc… […]

Symbole masqué dans les bibliothèques statiques construites avec Xcode

J’essaie de savoir si je peux créer une bibliothèque statique qui cache tous ses objects et fonctions internes, etc., à l’exception des interfaces que je veux exporter. J’expérimente Xcode (gcc 4.2). J’ai utilisé l’ __atsortingbute__((visibility(“hidden”))) sur certaines classes C ++ conformément à cette documentation . J’ai aussi défini les petites fonctions d’assistance comme étant des […]

Un compilateur peut-il détecter automatiquement les fonctions pures sans les informations de type sur la pureté?

Je discute donc avec mon ami qui prétend qu’un compilateur comme GCC peut détecter automatiquement une fonction pure sans aucune information de type. Je doute que. Les langages comme D ou Haskell ont de la pureté dans leurs systèmes de type et un programmeur définit explicitement quelle fonction est pure ou non. Une fonction pure […]

Est-ce que gcc ou clang corrige ce comportement?

J’ai un petit programme de jouets: static int value = 0; int function(int &value=value) { return value; } int main() { function(); } Comstackr avec g ++ 7.2: g ++ -std = c ++ 11 -Wall -Wextra test.cc -o test Aucun problème. Comstackr avec clang ++ – 3.9: clang ++ – 3.9 -std = c […]

Est-ce que “-1 >> 5;” comportement non spécifié en C?

C11 §6.5.7 Paragraphe 5: Le résultat de E1 >> E2 est E1 positions de bit E2 décalées à droite. Si E1 a un type non signé ou si E1 a un type signé et une valeur non négative, la valeur du résultat est la partie intégrale du quotient de E1 / 2*^E2 . Si E1 […]

Pourquoi utiliseriez-vous l’opérateur ternaire sans assigner une valeur à la condition “true” (x = x?: 1)

Dans le code qemu open source Android, j’ai parcouru cette ligne de code: machine->max_cpus = machine->max_cpus ?: 1; /* Default to UP */ Est-ce juste une façon déroutante de dire: if (machine->max_cpus) { ; //do nothing } else { machine->max_cpus = 1; } Si oui, ne serait-il pas plus clair que: if (machine->max_cpus == 0) […]

Travail de __asm__ __volatile__ (“”::: “memory”)

Qu’est-ce que __asm__ __volatile__ () et quelle est la signification de la “memory” pour l’architecture ARM?