Bonjour,
	
		
			
			
				
					
 Envoyé par 
glKabuto
					
				 
				Je voudrais savoir comment je pourrais faire pour caster deux structures similaires comme sur l'exemple ci-dessous:
			
		 
	 
 Comme tu le dis toi même en castant !
Le transtypage directe ne semble pas passer :
	
	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
   | #include <stdio.h>
 
struct S
{
    int a;
    float b;
    char c;
};
 
struct T
{
    int a;
    float b;
    char c;
};
 
int main (void)
{
  struct S s;
  struct T t;
 
  s.a = 0;
  s.b = 1.0;
  s.c = 'a';
 
  t = (struct T)s;
  printf ("%d %f %c\n", t.a, t.b, t.c);
  return 0;
} | 
 
	
	main.c:26: error: conversion to non-scalar type requested
 Il faut passer par un pointeur :
	
	1 2 3 4 5
   | [...]
  struct T *t;
[...]
  t = (struct T *)&s;
[...]  | 
 Ou si tu ne veux pas utiliser un pointeur :
	
	1 2 3 4 5
   | [...]
  struct T t;
[...]
  t = *(struct T *)&s;
[...]  | 
 
						
					
Partager