Codice PHP:
#include <stdio.h>   /* per printf */
#include <stdlib.h>  /* per malloc */
 
typedef struct ns {
        
int data;
        
struct ns *next;
node;
 
node *list_add(node **pint i) {
    
node *malloc(sizeof(node));
    
n->next = *p;
    *
n;
    
n->data i;
    return 
n;
}
 
void list_remove(node **p) { /* rimuove head */
    
if (*!= NULL) {
        
node *= *p;
        *
= (*p)->next;
        
free(n);
    }
}
 
node **list_search(node **nint i) {
    while (*
!= NULL) {
        if ((*
n)->data == i) {
            return 
n;
        }
        
= &(*n)->next;
    }
    return 
NULL;
}
 
void list_print(node *n) {
    if (
== NULL) {
        
printf("la lista è vuota\n");
    }
    while (
!= NULL) {
        
printf("print %p %p %d\n"nn->nextn->data);
        
n->next;
    }
}
 
int main(void) {
    
node *NULL;
 
    
list_add(&n0); /* lista: 0 */
    
list_add(&n1); /* lista: 1 0 */
    
list_add(&n2); /* lista: 2 1 0 */
    
list_add(&n3); /* lista: 3 2 1 0 */
    
list_add(&n4); /* lista: 4 3 2 1 0 */
    
list_print(n);
    
list_remove(&n);            /* rimuove il primo elemento (4) */
    
list_remove(&n->next);      /* rimuove il nuovo secondo (2) */
    
list_remove(list_search(&n1)); /* rimuove la cella che contiene 1 (primo) */
    
list_remove(&n->next);      /* rimuove il successivo (0) */
    
list_remove(&n);            /* rim
uove l'ultimo (3) */
    
list_print(n);
 
    return 
0;

Questo codice se lo compilo con gcc va, con g++ no:

[bonzo@wolverine Desktop]$ g++ -c lista.cpp
lista.cpp: In function ‘node* list_add(node**, int)’:
lista.cpp:10: error: invalid conversion from ‘void*’ to ‘node*’
[bonzo@wolverine Desktop]$ gcc -c lista.cpp
lista.cpp: In function ‘node* list_add(node**, int)’:
lista.cpp:10: error: invalid conversion from ‘void*’ to ‘node*’
[bonzo@wolverine Desktop]$ gcc -c lista.c
[bonzo@wolverine Desktop]$


Cos'è che non va?