Ошибка C2059 при объявлении макроса, который использует SAL для определения типа (?) - PullRequest
1 голос
/ 18 мая 2019

Я унаследовал некоторый код, этот код создается (для кого-то, к которому у меня нет доступа, как в более старой версии VS.) Я пытаюсь перенести его на VS2019.

Одна ошибка, которую я продолжаю получать: Ошибка C2059 синтаксическая ошибка: '[' По адресу: \ CodeAnalysis \ SourceAnnotations.h 290

Используется для этого:

#include <CodeAnalysis/SourceAnnotations.h>
#define F_PRINT [SA_FormatString(Style="printf")] const char *  
int x_sprintf(char *buffer, size_t buf_size, F_PRINT format, ...);

если я изменю x_sprintf следующим образом, он будет работать (и под работой я имею в виду, что ошибка в одной строке исчезнет).

int x_sprintf(char *buffer, size_t buf_size, [SA_FormatString(Style="printf")] const char * format, ...);

Одна проблема заключается в том, что этот F_PRINT используется повсеместно, поэтому я, скорее всего, не буду менять его повсеместно (по крайней мере, пока). Плюс тот факт, что я знаю, что он построен в какой-то момент (никаких изменений не было сделано) означает, что ошибка больше всего связана с моей средой. Может быть, мне не хватает некоторых флагов команд компилятора?

Может быть, некоторое форматирование SAL устарело, по крайней мере, если оно используется в макросах? Если да, то как мне переформатировать это?

...