/* * @@name: copyprivate.2c * @@type: C * @@compilable: yes * @@linkable: no * @@expect: success */ #include #include float read_next( ) { float * tmp; float return_val; #pragma omp single copyprivate(tmp) { tmp = (float *) malloc(sizeof(float)); } /* copies the pointer only */ #pragma omp master { scanf("%f", tmp); } #pragma omp barrier return_val = *tmp; #pragma omp barrier #pragma omp single nowait { free(tmp); } return return_val; }