Я получаю заблуждение '#' в ошибке программы, когда пытаюсь скомпилировать эту программу

Когда я пытаюсь скомпилировать с помощью -fopenmp флаг, я получаю ошибку ниже:

бездомный # в программе

Ниже мой код:

#include<omp.h> 
int main()

{        #pragma omp parallel 
     {
     int id=0;
     printf("hello(%d) ",id);
     printf("world(%d)\n",id);
     }
}

1 ответ

Решение

Квотирование C11, глава §6.10/p2, "Директивы предварительной обработки" (выделено мной)

Директива предварительной обработки состоит из последовательности токенов предварительной обработки, которая удовлетворяет следующим ограничениям: Первый токен в последовательности является # маркер предварительной обработки, который (в начале фазы перевода 4) является либо первым символом в исходном файле (необязательно после пробела, не содержащего символов новой строки), либо после пробела, содержащего хотя бы один символ новой строки. Последний токен в последовательности является первым символом новой строки, который следует за первым токеном в последовательности.

Итак, вы не можете иметь # после любого другого токена. В вашем коде

 int main()
 {        #pragma omp parallel
 ^        ^^^

синтаксис нарушает ограничения, отсюда и ошибка. Вы должны поместить это в свою собственную линию.

Другие вопросы по тегам