Поделиться через


Предупреждение компилятора (уровень 1 и уровень 2) C4091

"ключевое слово": игнорируется слева от типа, если переменная не объявлена

Компилятор обнаружил ситуацию, когда пользователь, вероятно, намеревался объявить переменную, но компилятор не смог объявить переменную.

Примеры

Атрибут __declspec в начале объявления определяемого пользователем типа применяется к переменной этого типа. C4091 указывает, что переменная не объявлена. Следующий пример создает C4091.

// C4091.cpp
// compile with: /W1 /c
__declspec(dllimport) class X {}; // C4091

// __declspec attribute applies to varX
__declspec(dllimport) class X2 {} varX;

// __declspec attribute after the class or struct keyword
// applies to user defined type
class __declspec(dllimport) X3 {};

Если идентификатор является типизированным, он также не может быть именем переменной. Следующий пример создает C4091.

// C4091_b.cpp
// compile with: /c /W1 /WX
#define LIST 4
typedef struct _LIST {} LIST;   // C4091