ホームページ  >  記事  >  バックエンド開発  >  さまざまなコンパイラにおける C++ 関数のデフォルト パラメータと変数パラメータの違い

さまざまなコンパイラにおける C++ 関数のデフォルト パラメータと変数パラメータの違い

WBOY
WBOYオリジナル
2024-04-22 22:48:011111ブラウズ

Default パラメーターを使用すると、関数は Visual Studio の別の構文を使用して、C 11 以降でサポートされている既定値を使用できます。可変引数を使用すると、関数が変数引数を受け取ることができます。C 11 以降でサポートされます。GCC では特別な構文が必要です。

C++ 函数默认参数和可变参数在不同编译器中的差异

さまざまなコンパイラにおける C 関数のデフォルト パラメータと変数パラメータの違い

デフォルト パラメータ

デフォルト パラメーターを使用すると、対応するパラメーターが指定されていない場合に、関数で事前定義された値を使用できます。 C 11 以降では、デフォルトのパラメータがサポートされています。

Visual Studio では、次の構文を使用してデフォルト パラメーターを指定できます。

int AddNumbers(int a, int b = 10) {
  return a + b;
}

GCC では、次の構文を使用します。

int AddNumbers(int a, int b = 10) __attribute__((deprecated));

可変パラメーター

変数パラメーターを使用すると、関数は無限の数のパラメーターを受け取ることができます。 C 11 以降では、可変個引数がサポートされています。

Visual Studio では、... を使用して変数パラメーターを表すことができます:

void PrintNumbers(int n, ...) {
  va_list args;
  va_start(args, n);
  for (int i = 0; i < n; i++) {
    cout << va_arg(args, int) << " ";
  }
  va_end(args);
}

GCC では、次の構文を使用します:

void PrintNumbers(int n, ...) __attribute__((deprecated));

実際のケース

デフォルトパラメータのケース:

int main() {
  // 使用默认参数
  int sum1 = AddNumbers(5); // sum1 为 15
  
  // 不使用默认参数
  int sum2 = AddNumbers(5, 20); // sum2 为 25
  
  return 0;
}

#可変パラメータのケース:

int main() {
  // 声明并初始化可变参数列表
  int n = 5;
  int numbers[] = {1, 2, 3, 4, 5};
  
  // 使用可变参数函数打印数字
  PrintNumbers(n, numbers); // 输出:1 2 3 4 5
  
  return 0;
}

    Visual Studio はまだ可変引数パラメーターをサポートしていないため、GCC で生成されたコードは Visual Studio ではコンパイルされません。デフォルト パラメーターの
  • __attribute__((deprecated)) は、機能が非推奨であるがまだサポートされていることを示します。ご使用の際は十分ご注意ください。

以上がさまざまなコンパイラにおける C++ 関数のデフォルト パラメータと変数パラメータの違いの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。