C and CPP version