Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

debutant : pointeur pointé n'a plus acces aux pointé du pointeur

1 réponse
Avatar
Sébastien
Slt,

je tente de comprendre un truc bizarre avec les ppointeur.

j'ai une fonction qui initialise un pointeur de type usb_dev_handle et do=
nt je
ne peux pas en parcourrir le contenu, alors ue les fonction de la bibliot=
heque
(libusb) le font sans erreur. regarder comme suit.

/*extrait usbi.h*/

struct usb_dev_handle {
int fd;

struct usb_bus *bus;
struct usb_device *device;

int config;
int interface;
int altsetting;

/* Added by RMT so implementations can store other per-open-device dat=
a */
void *impl_info;
};


/*end usbi.h*/

/*extrait usb.h*/


/* Data types */
struct usb_device;
struct usb_bus;

struct usb_device {
struct usb_device *next, *prev;

char filename[PATH_MAX + 1];

struct usb_bus *bus;

struct usb_device_descriptor descriptor;
struct usb_config_descriptor *config;

void *dev; /* Darwin support */
};

struct usb_bus {
struct usb_bus *next, *prev;

char dirname[PATH_MAX + 1];

struct usb_device *devices;
u_int32_t location;
};

struct usb_dev_handle;
typedef struct usb_dev_handle usb_dev_handle;

/* Variables */
extern struct usb_bus *usb_busses;


/*end usb.h*/

/*extrait usb.h*/
usb_dev_handle *usb_open(struct usb_device *dev)
{
usb_dev_handle *udev;

udev =3D malloc(sizeof(*udev));
if (!udev)
return NULL;

udev->fd =3D -1;
udev->device =3D dev;
udev->bus =3D dev->bus;
udev->config =3D udev->interface =3D udev->altsetting =3D -1;

if (usb_os_open(udev) < 0) {
free(udev);
return NULL;
}

return udev;
}

/*end usb.h*/

tres logiquement je me lance dans l'ecriture d'un truc qui vas me permett=
re
d'acceder au champ:

struct usb_dev_handle *my_usb_dev;

/* etc.... for(dev =3D dev->next) ... */
my_usb_dev =3D usb_open(dev);


/* etc.... */

fprintf(stderr, " opened ref %x , device struct pointer at %x\n",my_usb_d=
ev->fd
,my_usb_dev->device);




ce qui a mon esprit donne acces aux membres fd et device.

et bien non le compilateur me donne une erreur : "dereferencing pointer t=
o
incomplete type"



qu'es ce qui cloche, merci de m'eclairer.




S=E9bastien

1 réponse

Avatar
Jean-Marc Bourguet
Sébastien writes:

Quand tu veux mettre le meme message sur deux groupes, crossposte
(met le nom des deux groupes dans la ligne "Newsgroup:") et mets un
suivi sur un des deux.

Ici ta question etant du C, pourquoi mettre aussi le groupe C++?

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org