Bonjour,

Le code suivant ne compile pas avec le compilateur Keil:

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
26
27
28
29
30
31
32
#include <stdio.h>
#include <stdlib.h>
 
struct ip_addr {
  unsigned int addr;
};
 
 
typedef struct ip_addr ip_addr_t;
 
struct dhcp
{
  ip_addr_t offered_ip_addr; 
};
 
struct netif
{
  ip_addr_t ip_addr;
  int toto;
  struct dhcp *dhcp;
};
 
 
int main()
{
  struct netif *pstNetif;
  unsigned int ipAddress;
  pstNetif->ip_addr.addr = 0x8889;
  ipAddress = pstNetif->dhcp->offered_ip_addr.addr;
  printf("Hello world!\n");
  return 0;
}
L'erreur avec le compilateur Keil est
error: #393: pointer to incomplete class type is not allowed
lorsqu'il y a ipAddress = pstNetif->dhcp->offered_ip_addr.addr;


avec le compilateur gcc, ceci compile sans souci (un warning indique bien sur que pstNetif n'est pas utilisé).
Avant de poster, j'ai essayé quelques "workaround" pour attaquer la structure différemment, mais rien n'y fait.

Merci