Нестрогий символ Cpp20*C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Нестрогий символ Cpp20*

Сообщение Anonymous »


Я перенес наш проект Visual Studio C++ на Cpp20, и он компилируется нормально, за исключением нескольких мест, где вызывается какая-то несовместимая библиотека. Библиотека определяет макросы следующим образом:

#define IG_PDF_page_release_content(_hPage) \ AM_COMM_FUNCTION_WRAPPER((AT_ERRCOUNT (CACCUAPI *)( LPCHAR, \ HIG_PDF_PAGE)) \ ,IG_comm_function_call)("PDF.IG_PDF_page_release_content", \ (HIG_PDF_PAGE)(_hPage)) Это приводит к ошибкам нарушения строгой строки на каждом сайте вызова, поскольку строка «PDF.IG_PDF_page_release_content», являющаяся const char*, передается в аргумент char*. Я мог бы изменить заголовок библиотеки, чтобы она скомпилировалась:

#define IG_PDF_page_release_content(_hPage) \ AM_COMM_FUNCTION_WRAPPER((AT_ERRCOUNT (CACCUAPI *)( LPCHAR, \ HIG_PDF_PAGE)) \ ,IG_comm_function_call)((char *) "PDF.IG_PDF_page_release_content", \ (HIG_PDF_PAGE)(_hPage)) Однако это некрасиво, потому что с одной стороны много-много таких макросов, которые нужно менять, а с другой стороны, мне придется это переделывать каждый раз, когда я захочу обновить библиотеку до последняя версия (при условии, что производитель библиотеки продолжит игнорировать проблему).

Поэтому вместо этого я хотел бы сказать компилятору игнорировать проблему на каждом вызывающем сайте. К сожалению, C2440 — это скорее ошибка, чем предупреждение, поэтому pragma alert, похоже, не работает. Я пробовал:

#pragma alert(push, 1) #pragma alert(disable: 2440) // не работает, это не предупреждение char *s = "бла"; #pragma предупреждение(pop) #pragma предупреждение(push, 1) #pragma alert(disable: 4996) // связанное предупреждение, но не то же самое, что C2440 char *s = "бла"; #pragma предупреждение(pop) Есть идеи?
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»