extern "C" void abort (); struct S { int a, b, c, d; int sum (void) { int val = 0; val += a + b + this->c + this->d; return val; } int sum_offload (void) { int val = 0; #pragma omp target map(val) val += a + b + this->c + this->d; return val; } }; int main (void) { S s = { 1, 2, 3, 4 }; if (s.sum () != s.sum_offload ()) abort (); return 0; }