Bonjour,
Le code suivant
donne les informations suivantes (Dev-c++ 4.9.9.0 avec gcc/mingw 3.3.1):
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 #include <stdlib.h> #include <stdio.h> #define DBG 1 #if DBG #define P(x) \ printf ("X.%s = %u\n", #x, X. ## x) #else #define P(x) #endif #define UPD(x, v) \ do \ { \ X. ## x = v; \ X.modif = 1; \ P (x); \ } \ while (0) int main (void) { struct { int a; int modif; } X; UPD (a, 123); system ("pause"); return 0; }
Dans un projet plus gros, j'ai une foule de messages de ce genre, et la compilation est interrompue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 Compilateur: Default compiler Building Makefile: "D:\DevCpp\ed\Makefile.win" Exécution de make... make.exe -f "D:\DevCpp\ed\Makefile.win" all gcc.exe -c main.c -o main.o -I"D:/DEV-CPP/include" -W -Wall -O2 main.c:31:15: pasting "." and "a" does not give a valid preprocessing token main.c:31:15: pasting "." and "a" does not give a valid preprocessing token gcc.exe main.o -o "ed01.exe" -L"D:/DEV-CPP/lib" Exécution terminée
J'ai du mal à voir si c'est un problème de syntaxe (ok avec BC 3.1) de compilateur (gcc 3.3.1 serait plus 'picky') ou d'environnement (Dev-c++, config 'cachée' du compilateur)
Après consultation du net, je penche pour un problème de la version 3 de gcc. Ce problème à l'air connu, mais j'ai du mal à trouver une explication claire sur le net. Beaucoup de questions et pas de réponse à ma connaissance. (Jamais eu ce problème avec les versions gcc 3.2,x et 3.1.x).
Si quelqu'un en sais plus, je suis tout ouïe.
[EDIT]En fait il s'agit du bug 7976 (bugzilla) connu depuis gcc 3.1.x.
D'après
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=7976
ce n'est pas un bug, mais une non conformité à la norme (probablement supportée silencieusement par de nombreuses implémentations) qui est maintenant signalée.
Il semblerait qu'il faille passer par des fonctions de concaténation à plusieurs niveau pour arriver à ses fins...
Je vais avoir pas mal de code à mettre à jour...
[/EDIT]
Emmanuel
Partager