OVH Cloud OVH Cloud

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

13 réponses
Avatar
Sébastien
Slt,

je tente de comprendre un trucbizarre 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

3 réponses

1 2
Avatar
Antoine Leca
En 417f47f6$0$24443$, cedric va escriure:
Moi je fait carrément un sous repertoire "priv" mais c'est un peut
lourd je trouve.


C'est surtout dépendant de l'implémentation...
Déjà <priv/usb.h> n'est pas accepté partout.
Ensuite cetaines implémentations ont des règles bizarres pour chercher les
includes avec chemins: sans chemin elles cherchent dans tous les répertoires
possibles, masi si tu dit un chemin elles ne cherchent plus partout, par
exemple seulement dans les répertoires de l'utilisateur; ou encore elles ne
suivent pas bien les liens symboliques (fichiers .LNK avec Windows).


Antoine

Avatar
cedric
Merci de l'avertissement, c'est un argument massue pour changer de
méthode...
Avatar
drkm
Jean-Marc Bourguet writes:

D'avoir une notation pour ca oui. Le "i" je ne l'avais jamais vu
(j'ai vu P et Pvt, pour PriVaTe).


J'aime assez la solution consistant à utiliser une autre extension
que « .h ».

--drkm

1 2