misc-misplaced-const¶
此检查诊断当 const
限定符应用于 typedef
/ using
指向指针类型而不是指向指针的类型时,因为这种结构往往会误导开发者,因为 const
应用于指针而不是指针指向的类型。
例如,在以下代码中,结果类型为 int * const
而不是 const int *
typedef int *int_ptr;
void f(const int_ptr ptr) {
*ptr = 0; // potentially quite unexpectedly the int can be modified here
ptr = 0; // does not compile
}
当底层 typedef
/using
类型是指向 const
类型的指针或函数指针类型时,此检查不会诊断。这是因为 const
限定符不太可能被误解,因为它在底层指针指向的类型上将是多余的(或不允许的)。