Articles of gcc

Déterminer le niveau d’optimisation dans le préprocesseur?

-Og est une option d’optimisation relativement nouvelle destinée à améliorer l’expérience de débogage lors de l’application d’optimisations. Si un utilisateur sélectionne -Og , j’aimerais que mes fichiers source activent d’autres chemins de code afin d’améliorer l’expérience de débogage. GCC propose la macro de préprocesseur __OPTIMIZE__ , mais elle n’est définie que sur 1 lorsque les […]

Comment dire à openmp de ne pas synchroniser un tableau

J’ai un code qui a la structure suivante. #pragma omp parallel for for( i = 0; i < N; i++ ) { ….. index = get_index(…); array[index] = …; ….. } Désormais, la valeur d’ index est unique pour chaque thread (elle ne se chevauche jamais pour différents threads), mais bien entendu, OpenMP ne peut […]

Attendu de voir «la chaîne d’initialisation pour le tableau de caractères est trop longue» avertissement

Je m’attendais à voir “chaîne d’initialisation pour tableau de caractères trop long” avertissement pour les deux variables dans le programme suivant utilisant gcc. Programme: int main() { char str1[4]=”1234″; char str2[3]=”1234″; (void)str1; // Remove unused variable warning. (void)str2; // Remove unused variable warning. return 0; } Cependant, j’ai reçu un avertissement uniquement pour str2 . […]

Fonction _sbrk introuvable lorsque placée dans une bibliothèque statique

Je crée une application «nu-metal» pour le microcontrôleur stm32f407, doté d’un cœur ARM Cortex M4. En tant que tel, je m’occupe de l’implémentation de fonctions comme _sbrk . Je constate maintenant que lorsque je tente de créer une bibliothèque statique contenant _sbrk et de le lier avec mon main.c dans une application, l’éditeur de lien […]

Pourquoi une typedef n’est-elle pas autorisée dans la structure interne?

J’ai un programme qui définit une structure typedef dans une structure typedef existante et je me demande pourquoi je reçois une erreur de compilation. Voici le programme: typedef struct Outer { typedef struct Inner { int b; }INNER; INNER inner; int a; }OUTER; int main() { OUTER obj; obj.a = 10; obj.inner.b=8; return 0; } […]

Comment puis-je insérer les instructions de assembly dans le prolog et l’épilogue de fonction via gcc

J’essaie de construire profiler à un projet c. Je veux que gcc mette en place une instruction d’assemblage dans toutes les entrées de fonction et les points de sortie de fonction au moment de la compilation. J’essaie de rechercher des guides sur le Web, mais sans succès. Où puis-je apprendre à faire ça? Merci d’avance.

Utilisation de fichiers d’en-tête en C

J’ai quelques problèmes, y compris des bibliothèques personnalisées dans mon programme J’ai mon fichier main.c et un library.c (où toutes les fonctions sont stockées) et library.h (où tous les prototypes sont stockés). Dans main.c je place #include “library.h” mais les fonctions ne sont pas reconnues lorsque j’essaie de comstackr. Est-ce que je fais quelque chose […]

Qu’est-ce qui pourrait se passer pratiquement sur un comportement indéfini en langage C

J’ai lu de nombreux articles sur le comportement non défini (UB), mais tous parlent de théorie. Je me demande ce qui pourrait arriver dans la pratique , car les programmes contenant UB peuvent en fait fonctionner. Mes questions concernent les systèmes de type Unix, pas les systèmes embarqués. Je sais qu’il ne faut pas écrire […]

Décodage du code assembleur équivalent du code C

Voulant voir la sortie du compilateur (en assembleur) pour du code C, j’ai écrit un programme simple en C et généré son fichier d’assemblage à l’aide de gcc. Le code est le suivant: #include int main() { int i = 0; if ( i == 0 ) { printf(“testing\n”); } return 0; } L’assemblage généré […]

Passer un seul argument à main () en C

J’ai exécuté ce programme sous GCC (version 4.8.4 de gcc (Ubuntu 4.8.4-2ubuntu1 ~ 14.04.3)) sous Linux. Il a été compilé avec succès avec gcc myprog.c et exécuté sans aucun avertissement ni erreur. Alors, pourquoi le compilateur ne donne-t-il des avertissements ou des erreurs quand un seul argument est fourni pour main en C? #include int […]