Aracılığıyla paylaş


Uyarı C26498

Derleme zamanı değerlendirmesi isteniyorsa 'function' constexpr, mark variable 'variable' constexpr işlevidir (con.5)

Bu kural, C++ Çekirdek Yönergelerinden Con.5'i zorunlu kılmaya yardımcı olur: derleme zamanında hesaplanabilir değerler için constexpr kullanın.

Açıklamalar

Uyarı, ilk atamadan sonra değeri değişmeyen değişken olmayanconstexpr herhangi bir değişkene bir constexpr işlevin sonucu atanarak tetiklenir.

Kod analizi adı: USE_CONSTEXPR_FOR_FUNCTIONCALL

Örnek

Bu örnek kod, C26498'in nerede görünebileceğini gösterir:

constexpr int getMyValue()
{
    return 1;
}

void foo()
{
    constexpr int val0 = getMyValue(); // no C26498
    const int val1 = getMyValue();     // C26498, C26814
    int val2 = getMyValue();           // C26498, value is never modified
    int val3 = getMyValue();           // no C26498, val3 is assigned to below.
    val3 = val3 * val2;
}

Sorunları düzeltmek için ve işaretlerini kullanın val1 val2 constexpr:

constexpr int getMyValue()
{
    return 1;
}

void foo()
{
    constexpr int val0 = getMyValue(); // OK
    constexpr int val1 = getMyValue(); // OK
    constexpr int val2 = getMyValue(); // OK
    int val3 = getMyValue();           // OK
    val3 = val3 * val2;
}

Ayrıca bkz.

C26497
C26814
Con.5