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 :
J'utilise cette ligne de compilation :
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'obtiens ceci comme erreurs de compilation :
Code : Sélectionner tout - Visualiser dans une fenêtre à part g++ -Wall -W -ansi -pedantic FunctionTable.cpp -o FunctionTable
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 ?
Partager