编译器警告(等级 1)C4090

“operation”: 不同的“modifier”限定符

操作中使用的变量是使用指定的修饰符定义的,该修饰符可防止在编译器未检测到的情况下对变量进行修改。 编译表达式时无需进行修改。

当指向 constvolatile 项的指针分配给未声明为指向 constvolatile 的指针时,可能会引发此警告。

此警告针对 C 程序发出。 在 C++ 程序中,编译器发出错误:C2440

以下示例生成 C4090:

// C4090.c
// compile with: /W1
int *volatile *p;
int *const *q;
int **r;

int main() {
   p = q;   // C4090
   p = r;
   q = p;   // C4090
   q = r;
   r = p;   // C4090
   r = q;   // C4090
}