#include <stdio.h>
int cube( int x ) { printf("2mul %d\n",x); return x*x*x; }
int sum( int x , int y , int z ) { printf("2add\n"); return x+y+z; }
#define cube_NOE(x) ({ printf("2mul %d\n",x); x*x*x; })
#define sum_NOE(x,y,z) ({ printf("2add\n"); x+y+z; })
int main(int argc, char **argv)
{
printf("AOE:\n");
printf( "solution = %d\n" , sum(cube(2),cube(3),cube(4)) );
printf("\n\nNOE:\n");
printf( "solution = %d\n" , sum_NOE(cube_NOE(2),cube_NOE(3),cube_NOE(4)) );
return 0;
}