メインコンテンツ

AUTOSAR C++14 Rule A8-4-1

R2026b

Functions shall not be defined using the ellipsis notation

説明

Functions shall not be defined using the ellipsis notation.

根拠

省略表記を使用して、可変個の引数を受け入れる関数を定義することができます。ただし、コンパイラはコンパイル時に引数の型と数をチェックしません。そのため、引数の数や型が想定とは異なる場合、未定義の動作につながる可能性があります。

Polyspace 実装

コードでの関数定義に省略表記が使用されている場合、Polyspace® はこのルールに対する違反を報告します。

トラブルシューティング

ルール違反が想定されるものの、Polyspace から報告されない場合は、コーディング規約違反が想定どおりに表示されない理由の診断を参照してください。

例

すべて展開する

このコードでは、関数 printNumbers() で不確定の数の追加引数を受け入れられるようにするために、省略表記が使用されています。

#include <cstdarg>
#include <iostream>

void printNumbers(int count, ...) {		//Noncompliant
    va_list args;
    va_start(args, count);
    for (int i = 0; i < count; ++i) {
        int number = va_arg(args, int);
        std::cout << number << " ";
    }
    va_end(args);
}

int main() {
    printNumbers(3, 10, 20, 30); 
    return 0;
}

チェック情報

グループ: 宣言子
カテゴリ: Required、Automated
PQL 名: std.autosar_cpp14.A8_4_1

バージョン履歴

R2019a で導入