Bonjour,

Je viens de faire les frais d'un code comme ceci :

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
#include <cstdio>
 
struct Foo
{
    int bar;
};
 
static Foo foo;
 
void* getObject()
{
    return &foo;
}
 
void useObject(void* object)
{
    printf("%s %p\n", __PRETTY_FUNCTION__, object);
}
 
int main()
{
    void* handle = getObject();
    useObject(handle);
    useObject(&handle);
}
En gros, passer un void* ou l'adresse d'un void*, le compilateur n'y voit pas de différence... Pas de warning, pas d'erreur quand on compile avec $ g++ prog.cc -Wall -Wextra -std=c++17 -pedantic (testable sur https://wandbox.org/).

Comment ça se fait ?

Merci d'avance !