Salut
J'ai voulu compiler un exemple de "penser en C++" pour travailler un peu sur les pointeurs de fonctions. Grosse surprise sur cette exemple :
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
#include <iostream>
using namespace std;
// A macro to define dummy functions:
#define DF(N) void N() { \
    cout << "function " #N " called..." << endl; }
DF(a); DF(b); DF(c); DF(d); DF(e); DF(f); DF(g);
void (*func_table[])() = { a, b, c, d, e, f, g };
int main() {
  while(1) {
     cout << "press a key from 'a' to 'g' "
       "or q to quit" << endl;
     char c, cr;
     cin.get(c); cin.get(cr); // second one for CR
     if ( c == 'q' )
       break; // ... out of while(1)
     if ( c < 'a' || c > 'g' )
       continue;
     (*func_table[c - 'a'])();
  }
} ///:~
J'utilise cette ligne de compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
g++ -Wall -W -ansi -pedantic FunctionTable.cpp -o FunctionTable
J'obtiens ceci comme erreurs de compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’
FunctionTable.cpp:6: erreur: extra ‘;’

J'ai bien essayé de comprendre l'erreur mais ... rien
Si j'enlève -pedantic lors de la compilation, ça passe mais ... je ne comprends pas pourquoi.
Quelqu'un pourrait-il m'éclairer ?