Adresse d'un void* vs un void*
Bonjour,
Je viens de faire les frais d'un code comme ceci :
Code:
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 ! :ccool: