Я получаю заблуждение '#' в ошибке программы, когда пытаюсь скомпилировать эту программу
Когда я пытаюсь скомпилировать с помощью -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
^ ^^^
синтаксис нарушает ограничения, отсюда и ошибка. Вы должны поместить это в свою собственную линию.