Bonjour,
je viens de l'univers SAS et je n'ai jamais fait de C++.
Afin d'étendre les possibilité du logiciel SAS, une nouvelle procédure a récemment été introduite afin de créer des fonctions à partir de code C++.

Un certain nombre de code sont donnés en exemple.
Je souhaite comprendre cet exemple

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
33
34
35
36
37
38
39
40
proc proto package=sasuser.mylib.str2;
struct linklist{
   double value;
   struct linklist * next;
   struct linklist * prev;
};
 
struct linklist * get_list(int);
 
externc get_list;
   struct linklist * get_list(int len){
      int i;
      struct linklist * list=0;
      list=(struct linklist*)
         malloc(len*sizeof(struct linklist));
      for (i=0;i<len-1;i++){
         list[i].value=i;
         list[i].next=&list[i+1];
      }
      list[i].value=i;
      list[i].next=0;
      return list;
   }
externcend;
 
 
run;
 
options pageno=1 nodate ls=80 ps=64;
proc fcmp libname=sasuser.mylib;
   struct linklist list;
   list=get_list(3);
*   put list.value=;
put list ;
   do while (^isnull(list.next));
      list = list.next;
     * put list.value=;
	  put list ;
   end;
run;
J'ai dans ma jeunesse fait un peu de Pascal donc je vois à peu près ce qu'est un pointeur.
Après avoir examiné le code ces deux derniers jours je commence à comprendre son début, cependant arrivé à la ligne suivante :

list=(struct linklist*)

je n'arrive pas à en saisir le sens, j'ai parcouru pas mal de cours pour débutant en C++ et je n'ai pour l'instant pas encore repéré de telle construction. Et je me demande si c'est bien du code C++ et dans ce cas quel est son sens ou bien si c'est une invocation propre à la Proc Proto de SAS (et dans ce cas je changerais de forum...).

Merci de votre aide.

Edit : après de nouvelles recherches la PROC PROTO semble accepter du code C ou C++ , comme je ne connais par leur syntaxe je pensais que le code ci-dessus était du C++ mais il semblerait que ce soit du C , si on pouvait me le confirmer peut-être que ce topic aurait plutot sa place dans le forum C et non C++.