ダバイさん+(10.Declaration,Definition)


おはようございます.金東宇です.
この記事では、「宣言と定義」(Declaration&Definition)について説明します.
まずハーモニーを見てみましょう
#include <iostream>

using namespace std;

int add(int a, int b); // forward declaration, 전방선언
int multiply(int a, int b);
int subtract(int a, int b);

/* 
이는 C++의 코드 실행 순서와 관련된 개념이다.
위에서 아래로 차례대로 컴파일러는 코드를 읽고, 실행파일을 만드는데
함수의 콜이 이루어진 부분보다 아래에 함수가 정의된 경우
compile error가 발생한다.
전방선언은 이러한 error를 회피하기 위해 간단한 입출력 data type을 상단에
명시하는 것으로, 이 경우 컴파일러가 경고나 에러를 발생시키지 않는다.
즉, 이미 함수에 대한 인식을 시켜주는 개념이라고 볼 수 있다.
알고 맞으면 덜 아픈 것처럼 컴파일러에게 미리 말해주는 방법도 있다.
*/ 


int main()
{
	cout << add(1, 2) << endl;
	// add에 커서를 올리고 우클릭 + peek definition을 활용해보세요!
	// 함수에 대한 설명이 나올겁니다.

	return 0;

}

int add(int x, int y) // definition, 정의
{ 
	return x + y; 
}

int multiply(int a, int b) 
{
	return a * b;
}

int subtract(int a, int b)
{
	return a - b;
}
ああ、私は初めてこの概念を見ました.前方宣言?
forward声明では、上記のコメントを読むことをお勧めします.
これは、C++のコード実行順序が上から下にあるため、関数呼び出しの位置が関数呼び出しの位置より低い場合にコンパイルエラーが発生することを防止できます.
JSはホスティングという概念を取り入れていますので、興味があれば読んでみることをお勧めします.
ハウスティンは私が想像していたより面白くて、いい方法です.しかし、カバーの誤用によるミスも面白いところが多いので、メリットとデメリットを考えてみましょう.
それでは今回の文章はここまでにしましょう