Compiler Error C3021
Visual Studio 2015
The new home for Visual Studio documentation is Visual Studio 2017 Documentation on docs.microsoft.com.
The latest version of this topic can be found at Compiler Error C3021.
arg' : argument is empty on OpenMP directive 'directive'
An argument is required for an OpenMP directive.
The following sample generates C3021:
// C3021.cpp
// compile with: /openmp
#include <stdio.h>
#include "omp.h"
int g = 0;
int main()
{
int x, y, i;
#pragma omp parallel for schedule(static,) // C3021
for (i = 0; i < 10; ++i) ;
#pragma omp parallel for schedule() // C3021
for (i = 0; i < 10; ++i)
printf_s("Hello world, thread %d, iteration %d\n",
omp_get_thread_num(), i);
#pragma omp parallel reduction() // C3021
;
#pragma omp parallel reduction(+ :) // C3021
;
//
// The following shows correct syntax examples.
//
#pragma omp parallel reduction(+ : x, y)
;
#pragma omp parallel reduction(* : x, y)
;
#pragma omp parallel reduction(- : x, y)
;
#pragma omp parallel reduction(& : x, y)
;
#pragma omp parallel reduction(^ : x, y)
;
#pragma omp parallel reduction(| : x, y)
;
#pragma omp parallel reduction(&& : x, y)
;
#pragma omp parallel reduction(|| : x, y)
;
}
Show: