1. ホーム
  2. c++

[解決済み] 形式パラメータとは何ですか?

2022-02-14 11:51:49

質問

C++でコンパイルする際、以下のようなquot;formal parameters"を扱うエラーメッセージにしばしば遭遇する。

error C2719: 'b': formal parameter with __declspec(align('16')) won't be aligned

確かにこのエラーは理解できますし、また b は、私が定義している関数のパラメータです。

しかし、パラメータが 形式的 ? また インフォーマル パラメータも必要ですか?

フォーマルパラメータという言葉は他の言語でも使われているようですが、これはC言語系に限ったことではなく、もっと一般的な言葉なのでしょうか?インフォーマル・パラメータは、一部の言語でサポートされているのでしょうか?


回答を拝見して、最後に1つ質問です。これらの名前 形式パラメータ 実パラメータ の由来は?それとも、抽象的な言語の計算で、そのように呼び出すことによる効果なのでしょうか?

解決方法は?

あるのは 正式 実際 パラメータを指定します。

void foo(int arg); //arg is a formal parameter

int main()
{
    int val = 1;
    foo(val);  //val is an actual parameter
}

から C++標準 :

1.3.1 形式的パラメータ(パラメータ)

関数の宣言の一部として宣言されたオブジェクトまたは参照。 定義、または例外ハンドラのcatch節で定義される。 関数またはハンドラへの入力時に値を取得する識別子。 カンマで区切られたリストのうち、直後の括弧で囲まれたもの。 関数型マクロ定義でマクロ名に続くもの、または テンプレートパラメータがあります。パラメータは,正式な引数または 形式パラメータ

1.3.10 実パラメータ(引数)

括弧で囲まれたカンマ区切りのリスト内の式 関数呼び出し式では、前処理トークンの列で カンマで区切られたリストで、関数のようなもの。 マクロ呼び出し、throw のオペランド、または式、type-id、または テンプレート名をカンマで区切ったリストで、アングルで囲んでください。 括弧で囲まれたテンプレートのインスタンス化です。実引数とも呼ばれる または実パラメータ。