Articles of gcc

Assigner un entier de 128 bits en C

Lorsque j’essaie d’assigner un entier de 128 bits dans gcc 4.9.1, un warning: integer constant is too large for its type . Exemple de code int main(void) { __uint128_t p = 47942806932686753431; return 0; } Sortie Je comstack avec gcc -std=c11 -o test test.c et je reçois: test.c: In function ‘main’: test.c:2:19: warning: integer constant […]

Comstackr plusieurs fichiers C avec gcc

J’ai deux fichiers, main.o et modules.o , et j’essaie de les comstackr pour que main.o puisse appeler des fonctions dans modules.o . On m’a explicitement dit de ne pas essayer #include module.o . Je ne sais vraiment pas ce que je devrais faire à la place. J’ai essayé différentes versions de gcc (telles que gcc […]

Tableau de longueur variable au milieu de struct – pourquoi ce code C est valide pour gcc

Il existe un code étrange utilisant VLA (Tableaux de Longueur Variable) qui est traité comme Valid C (C99, C11) par gcc 4.6 $ cat ac int main(int argc,char**argv) { struct args_t{ int a; int params[argc]; // << Wat? // VLA in the middle of some struct, between other fields int b; } args; args.b=0; for(args.a=0;args.a<argc;args.a++) […]

Comment obtenir les adresses de début et de fin d’une section ELF personnalisée en C (gcc)?

J’ai déjà constaté l’utilisation de l’ atsortingbut gcc __section__ (en particulier dans le kernel Linux) pour collecter des données (généralement des pointeurs de fonction) dans des sections ELF personnalisées. Comment les “éléments” qui sont placés dans ces sections personnalisées sont-ils récupérés et utilisés?

Produire des boucles sans instruction cmp dans GCC

J’essaie d’optimiser avec GCC et les composants insortingnsèques. Considérons par exemple la fonction suivante. void sortingad(float *x, float *y, float *z, const int n) { float k = 3.14159f; int i; __m256 k4 = _mm256_set1_ps(k); for(i=0; i<n; i+=8) { _mm256_store_ps(&z[i], _mm256_add_ps(_mm256_load_ps(&x[i]), _mm256_mul_ps(k4, _mm256_load_ps(&y[i])))); } } Cela produit une boucle principale comme celle-ci 20: vmulps ymm0,ymm1,[rsi+rax*1] […]

Équivalents au nombre de MSVC dans d’autres compilateurs?

Existe-t-il des équivalents intégrés à _countof fournis par d’autres compilateurs, en particulier GCC et Clang? Existe-t-il des formes non macro?

existe-t-il une option du compilateur / éditeur de liens GCC pour changer le nom de main?

Mon logiciel a un principal pour une utilisation normale et un autre pour les tests unitaires. J’adorerais ça s’il y avait une option à gcc pour spécifier quelle fonction “principale” utiliser.

Comment utiliser pkg-config dans Make

Je veux comstackr le programme GTK le plus simple. Je peux le comstackr en utilisant la ligne de commande: gcc $(pkg-config –cflags –libs gtk+-3.0) main.c -o main.o Cependant, si j’utilise Make it does not work: CFLAGS=-g -Wall -Wextra $(pkg-config –cflags) LDFLAGS=$(pkg-config –libs gtk+-3.0) CC=gcc SOURCES=$(wildcard *.c) EXECUTABLES=$(patsubst %.c,%,$(SOURCES)) all: $(EXECUTABLES) Il me dit ceci: gcc […]

La liaison d’un programme C directement avec ld échoue avec une référence non définie à `__libc_csu_fini`

J’essaie de comstackr un programme C sous Linux. Cependant, par curiosité, j’essaie d’exécuter certaines étapes à la main: j’utilise: l’interface gcc pour produire du code assembleur puis exécutez l’assembleur GNU pour obtenir un fichier object puis reliez-le au runtime C pour obtenir un exécutable fonctionnel. Maintenant, je suis coincé avec la partie de liaison. Le […]

25: avertissement: l’élément initializer n’est pas une expression constante

GCC me donne le message d’avertissement suivant lors de la tentative de compilation: las.c:13:18: warning: initializer element is not a constant expression [enabled by default] const int ROWS = pow (2, MESH_K); Les parties de code pertinentes pour cela sont: #define MESH_K 10 #define BUFF_SIZE 30 const int ROWS = pow (2, MESH_K); Je dois […]