공식 파라미터란 무엇입니까?
C++로 컴파일할 때 "공식 매개변수"를 다루는 오류 메시지가 자주 나타납니다.
error C2719: 'b': formal parameter with __declspec(align('16')) won't be aligned
저는 그 오류를 이해합니다. 그리고 그 사실은b는 제가 정의하고 있는 함수의 파라미터입니다.
그러나 매개 변수가 형식적이라는 것은 무엇을 의미합니까?비공식적인 매개변수도 있을 수 있습니까?
다른 언어에서도 "공식 매개변수"라는 용어가 등장한다는 것을 알고 있기 때문에, 반드시 C어족에 한정되지는 않는 보다 일반적인 용어라고 추측합니다.비공식 매개 변수는 일부 언어 하위 집합에서 지원됩니까?
답을 보고 난 후 마지막 질문이 하나 있습니다.공식 매개변수와 실제 매개변수의 출처는 어디입니까?C 표준에서 비롯된 것입니까, 아니면 어떤 추상 언어 미적분학에서 그렇게 부르는 것의 효과입니까?
공식 파라미터와 실제 파라미터가 있습니다.
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 정형 파라미터(parameter)
함수 선언 또는 정의의 일부로 선언된 객체 또는 참조, 또는 예외 처리자의 캐치 조항에서,함수 또는 핸들러에 대한 입력 시 값을 획득하는 것, 함수와 유사한 매크로 정의에서 매크로 이름 바로 뒤에 괄호로 경계가 지정된 쉼표로 구분된 목록의 식별자, 또는 템플릿 매개 변수.매개 변수는 형식 인수 또는 형식 매개 변수라고도 합니다.
1.3.10 실제 파라미터(argument)
함수 호출 표현식에서 괄호로 경계를 지정한 쉼표로 구분된 목록의 표현식, 함수와 유사한 매크로 호출에서 괄호로 경계를 지정한 쉼표로 구분된 목록의 사전 처리 토큰 시퀀스, 던지기의 피연산자 또는 표현식,템플릿 인스턴스화에서 각 괄호로 경계를 지정한 쉼표로 구분된 목록의 type-id 또는 template-name.실제 인수 또는 실제 매개 변수라고도 합니다.
공식 매개변수는 함수 정의에서 알려진 매개변수입니다.실제 매개변수는 함수를 호출할 때 실제로(따라서 이름이) 함수에 전달되는 것입니다.
void foo( int a ); // a is a formal parameter
foo(10); // 10 is the actual parameter
용어를 놓고 약간 현학적인 태도를 보이는 것이지만 꽤 유용합니다.공식 매개변수는 기능 매개변수에 대해 생각하는 것입니다.
int foo(bool a, float b);
여기서a그리고.b형식 매개변수입니다.중요한 것은 함수 본문에서 실제로 그 값을 알지 못한 채 그 매개 변수들을 "공식적으로" 언급하고 있다는 것입니다.함수 호출 식을 실제로 평가할 때만 형식 함수 매개 변수가 함수 호출 인수에 바인딩됩니다.
int result = foo(false, 1.5);
이 호출식에서 값은false첫 번째 인수는 공식 매개 변수에 결합됩니다.a, 그리고 두 번째 논쟁도 마찬가지입니다.
매개 변수와 인수의 구별은 언어 설계자나 컴파일러 작성자에게 더 중요할 수 있지만, C++의 예처럼 템플릿 인수 추론 규칙을 따르려고 할 때 이 문제를 이해하는 것이 매우 도움이 될 수 있습니다.
언급URL : https://stackoverflow.com/questions/18870156/what-is-a-formal-parameter
'codememo' 카테고리의 다른 글
| 페이지 로드 완료 후 함수 실행 (0) | 2023.10.20 |
|---|---|
| WooCommerce 등록 양식에 사용자 정의 필드를 추가하는 방법 (0) | 2023.10.20 |
| 페이지 새로 고침 없이 ajax를 사용하여 acf_form을 저장하는 방법 (0) | 2023.10.20 |
| XSL: xsl: template의 match="/"의 의미 (0) | 2023.10.20 |
| lodash에 일치하는 아이템을 대체할 수 있는 기능이 있습니까? (0) | 2023.10.20 |