C6269
警告 C6269: 作業順序可能不正確: 已忽略取值
這個警告表示指標取值的結果會被忽略,這會引發為何指標最先進行取值的問題。
編譯器會適當地將不必要的取值處理掉以進行最佳化。不過,在某些情況下,這項缺失可能會反映出優先順序或邏輯錯誤。
這項缺失的其中一個常見原因就是運算陳述式 (Expression Statement) 的形式:
*p++;
如果此陳述式的目的只在於遞增指標 p,則不一定需要取值。不過,如果其目的在於遞增 p 所指向的位置,則程式不會表現出所要的行為,原因在於*p++ 建構會解譯為 * (p++),而非 (*p)++。
範例
下列程式碼將產生出這個警告:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
*p++;
// code ...
}
若要更正這個警告,請使用括弧,如下列程式碼所示:
#include <windows.h>
void f( int *p )
{
// code ...
if( p != NULL )
(*p)++;
// code ...
}