C 컴퓨터 언어의 정적 함수

C Keompyuteo Eon Eoui Jeongjeog Hamsu



'정적'은 컴퓨터 언어 C의 예약어입니다. 함수와 함께 사용할 수 있는 저장소 클래스 지정자입니다. C 프로그램은 하나 이상의 파일을 가질 수 있습니다. 파일 중 하나만 C main() 함수가 있어야 합니다. 이 기사에서는 mainFile.c라고 하는 C main() 함수가 있는 파일과 otherFile.c라고 하는 주 함수가 없는 다른 파일의 두 파일만 고려합니다.

전역 기능

전역 함수는 main() 함수 이전에 C 파일에 정의된 함수입니다. main() 함수도 전역 함수이지만 main() 함수는 이 기사의 초점이 아닙니다. C 언어에서 프로그래머 정의 함수는 일반적으로 전역 함수이며 단순히 함수라고 합니다.

전역 함수는 해당 파일의 모든 범위에서 호출할 수 있습니다. 전역 함수가 다른 파일에서 보이려면 해당 프로토타입이 다른 파일에서 선언되어야 합니다(아래 참조). 한 파일에 정의된 함수가 다른 파일에서 보이지 않도록 하려면 정의 앞에 예약어, 정적. 이를 통해 정적 함수는 자체 파일에서만 전역 함수가 되고 다른 파일에서는 볼 수 없습니다.







따라서 otherFile.c에 정의된 전역 함수는 otherFile.c 어디에서나 볼 수 있습니다. mainFile.c에서 볼 수 있으려면 프로토타입이 mainFile.c에서 선언되어야 합니다(아래 참조). otherFile.c의 정의 앞에 '정적'이 오면 안 됩니다. mainFile.c에서 볼 수 없도록 하려면 otherFile.c의 정의에 static이라는 단어를 앞에 붙여서 staticremoved 쉼표로 ​​만들어야 합니다.



이 기사에서는 함수 프로토타입의 의미와 두 개 이상의 파일로 구성된 C 프로그램에서 사용하는 컴퓨터 언어 C의 정적 함수를 설명합니다.



mainFile.c 및 otherFile.c 파일의 컴파일은 다음 Bash 터미널 명령으로 수행할 수 있습니다.





gcc 메인 파일. 기타파일. - 그 온도. exe

temp.exe는 결과로 나오는 단일 실행 파일의 이름입니다.

기사 내용



– 소개 – 위 참조

– C 함수 프로토타입

– 글로벌 기능

– 정적 함수 고유

- 결론

C 함수 프로토타입

전역 함수 정의를 고려하십시오.

* fn1 ( * 스트리 ) {
반품 스트리 ;
}

이 함수의 프로토타입은 다음과 같습니다.

* fn1 ( * 스트리 ) ;

세미콜론으로 끝나는 함수 서명입니다.

이제 otherFile.c의 내용을 다음과 같이 설정합니다.

* fn1 ( * 스트리 ) {

반품 스트리 ;

}

otherFile.c 파일에 전역 함수 fn1()의 정의만 있다고 가정합니다. 이제 mainFile.c 파일의 내용을 다음과 같이 설정합니다.

#include

* fn1 ( * 스트리 ) ;

정수 기본 ( )
{
* str = fn1 ( '본' ) ;
인쇄 ( '%에스 \N ' , str ) ;

반품 0 ;
}

헤더(라이브러리)를 포함하는 것으로 시작됩니다. 그 다음에는 다른 파일의 fn() 함수의 프로토타입 선언이 이어집니다.

이 메인 파일에는 기본 main() 함수 이외의 전역 함수 정의가 없습니다. 주 함수에서 첫 번째 명령문은 다른 파일에 정의된 fn1() 함수를 호출합니다. fn1()의 프로토타입이 이 파일(mainFile.c)에 선언되지 않은 경우 이 호출은 유효하지 않습니다.

독자가 위의 두 파일을 코딩했다면 다음 명령을 사용하여 프로그램을 하나의 실행 파일로 컴파일할 수 있습니다.

gcc 메인 파일. 기타파일. - 그 온도. exe

줄 끝에서 Enter 키를 누릅니다. 출력은 '본'이어야 합니다.

전역 기능

mainFile.c 파일은 다음과 같이 수정할 수 있습니다.

#include

* fn1 ( * 스트리 ) ;

* fn ( * ) {
반품 ;
}

정수 기본 ( )
{
* str1 = fn1 ( '본' ) ;
인쇄 ( '%에스 \N ' , str1 ) ;
* str2 = fn ( '파일에서 볼 수 있는 글로벌.' ) ;
인쇄 ( '%에스 \N ' , str2 ) ;
반품 0 ;
}

이제 파일에는 mainFile.c라는 두 개의 전역 함수가 있습니다. 함수의 이름은 fn() 및 main()입니다. dfn()은 전역 함수입니다. 호출에 의해 main() 함수 로컬 범위에서 볼 수 있습니다. 언어 C에서 fn()과 같은 전역 범위의 전역 함수는 단순히 함수라고 합니다. 또한 otherFile.c 파일의 전역 함수 fn1()을 단순히 함수라고 합니다.

두 파일이 temp.exe로 다시 컴파일되면 출력은 다음과 같습니다.

파일에서 볼 수 있는 전역.

참고: fn()에 대한 함수 정의는 otherFile.c라는 다른 파일에서도 볼 수 있습니다. 이를 달성하려면 다음과 같이 otherFile.c에 프로토타입 선언이 있어야 합니다.

* fn ( * ) ;

세미콜론으로 끝납니다. 이 활동은 독자를 위한 연습으로 남겨둡니다.

정적 함수 적절한

위의 논의에서 함수는 해당 파일의 모든 범위(어디서나)에서 볼 수 있습니다. 프로토타입이 선언된 경우 동일한 프로그램에 대해 다른 파일에서도 볼 수 있습니다. 파일의 정의가 다른 파일에서 보이지 않도록 하려면 그 앞에 예약어인 static을 붙여서 정의를 정적으로 만드십시오. 프로토타입이 다른 파일에서 선언되더라도 여전히 다른 파일에서 볼 수 없습니다. 프로그램 파일도 컴파일되지 않습니다. 이를 설명하기 위해 otherFile.c 파일의 내용을 다음과 같이 설정합니다.

공전 * fn1 ( * 스트리 ) {

반품 스트리 ;

}

이것은 이전과 같이 otherFile.c 파일에 있는 동일한 내용이지만 앞에 예약어인 static이 있습니다. mainFile.c 파일의 내용은 동일하게 유지됩니다. 명령으로 프로그램 파일을 컴파일하려고 하면,

gcc 메인 파일. 기타파일. - 그 온도. exe

컴파일러는 프로그램이 컴파일되지 않았음을 의미하는 오류 메시지를 발행합니다. 다른 파일의 프로토타입 선언 앞에 static이 와도 프로그램 파일은 여전히 ​​컴파일되지 않습니다.

결론

C 언어의 함수 정의는 전역 함수입니다. 이 함수는 해당 파일의 모든 범위에서 호출(표시)될 수 있습니다. 이 함수를 메인 파일과 같은 다른 파일에서 보려면 해당 프로토타입 선언을 다른 파일에 입력해야 합니다. 이 함수가 다른 파일에서 보이지 않도록 하려면 그 앞에 예약어인 static을 붙여서 정의를 정적으로 만드십시오.