当前位置 - 무료 법률 상담 플랫폼 - 지식재산권 전공 - 프로그램의 함수 선언 및 함수 정의는 어디에 있습니까? 왜요

프로그램의 함수 선언 및 함수 정의는 어디에 있습니까? 왜요

함수는 프로그래밍 언어에서 독립적으로 실행할 수 있는 코드 블록입니다.

C 언어에서 프로그램은 main () 함수로 시작되며, 다른 함수는 main 함수에 의해 호출될 때만 실행할 수 있습니다.

컴파일된 실행 파일이 셸 인터프리터에서 실행되면 주 함수가 셸에 의해 시작되고 실행됩니다.

C 언어의 함수는 선언, 정의 및 호출의 세 단계를 거칩니다.

함수 선언은 함수의 프로토타입을 제공하여 프로그래머에게 함수에 매개 변수를 전달하는 방법, 반환 값을 받는 방법, 컴파일러에서 코드 유형을 확인하는 방법을 알려 줍니다. 주 함수의 선언은 다음과 같습니다.

Intmain ();

반환 값은 int 유형이며 매개 변수가 필요하지 않습니다.

Printf () 함수는 int printf(const char* fmt, ...);

반환 값은 int 유형이고 첫 번째 인수는 형식 문자열이며 그 뒤에 변수 인수가 올 수 있습니다.

함수 선언의 구문은 다음과 같습니다.

반환 값 유형의 함수 이름 (매개변수 유형 0, 매개변수 변수 0, 매개변수 유형 1, 매개변수 변수1);

여러 매개 변수가 있는 경우 쉼표로 구분합니다. 각 매개 변수에는 매개 변수의 변수 이름을 생략할 수 있는 유형 및 변수 이름이 있습니다. 마지막으로 세미콜론으로 선언 문을 종료합니다.

함수의 소스 코드를 보지 않으려면 하나의 문과 컴파일된 파일만 제공할 수 있고 다른 사람은 어셈블리 코드만 볼 수 있습니다. (웃음) C 언어의이 디자인은 지적 재산권 보호에 도움이됩니다.

함수 정의는 함수 본문이 선언 후 세미콜론이 없는 중괄호로 표현되며 함수의 특정 코드는 중괄호 안에 기록됩니다.

위 그림의 main () 함수는 정의이고 printf () 함수는 선언입니다.

함수의 내용을 구현하는 정의입니다. 함수는 여러 번 정의할 수 없습니다. 그렇지 않으면 컴파일러에서 사용할 정의 코드를 알 수 없습니다.

그러나 함수는 선언이 동일하고 모순되지 않는 한 여러 번 선언할 수 있습니다.

두 개의 중괄호 {} 만 넣으면 함수가 정의됩니다. 빈 실현도 일종의 실현이다. 먼저 이 자리를 차지할 수 있고, 나중에 구체적인 기능 코드를 채울 수 있다. 즉, 세부 사항을 채우기 전에 전체 시나리오의 프레임워크를 제공하는 것입니다.

함수가 구현되면 함수를 호출해야 실행할 수 있습니다.

Main 함수가 셸에 의해 시작되는 것을 제외한 모든 함수는 main 함수에 의해 직접 또는 간접적으로 호출해야 합니다.

함수가 실행되면 실제로 주 함수에서 해당 함수로의 호출 체인이 있습니다.

함수 호출의 구문은 다음과 같습니다.

함수 이름 (인수 변수 0, 인수 변수1);

여러 매개 변수가 있는 경우 쉼표로 구분합니다. 함수 호출의 반환 값을 수신하려면 변수를 사용하여 다음을 수신할 수 있습니다.

반환 값 변수 = 함수 이름 (인수 변수 0, 인수 변수1);

반환 값 변수의 유형은 함수의 반환 값 유형과 일치해야 하며 사용하기 전에 선언해야 합니다.

반환 값이 있는 함수의 경우 반환 값을 받을 필요가 없습니다. 예를 들어 printf () 에는 인쇄할 문자 수를 나타내는 int 유형의 반환 값이 있지만 일반적으로 수신되지 않습니다.

그래서 C 언어의 입구 코드는 printf ("hello world \ n") 입니다.

Intret = printf ("hello world \ n") 대신 :

함수 이름은 c 언어에서 id 에 속합니다.

식별자에 대한 명명 규칙은 밑줄 또는 대/소문자로 시작하며 숫자, 문자, 밑줄 (연산자 또는 기타 특수 기호 제외) 이 될 수 있습니다.

코드에서 변수 이름, 구조 유형 이름, 함수 이름 또는 goto 에 사용되는 레이블을 나타내는 데 사용됩니다.

기준 유형의 유형 이름은 키로 정의되며 더 이상 식별자로 사용할 수 없습니다.

구조

Int a;;

Int b;;

} s;;

구조 유형을 나타내는 식별자입니다.

A 는 구조의 멤버 변수 a 를 나타내는 식별자입니다.

S 는 변수 S 를 나타내는 식별자이며, 유형은 구조 유형 S 입니다.

함수 이름도 식별자이므로 함수 이름도 밑줄 또는 대/소문자로 시작해야 하며 키워드, 연산자 또는 기타 특수 기호일 수 없습니다.

0 123, 함수 이름이 될 수 없습니다. c 언어에서 0 으로 시작하는 숫자는 8 진수입니다.

0x 123 또는 함수 이름일 수 없습니다. 0x 로 시작하는 숫자는 16 진수 16 입니다.

메인, 함수 이름으로 사용할 수 있는 주 함수입니다. 전체 프로그램 중 하나만 있을 수 있으며 일반 함수의 이름으로 사용할 수 없습니다.

__schedule 은 밑줄로 시작하며 함수 이름으로 사용할 수 있습니다.

그러나 두 밑줄로 시작하는 함수는 대부분 Linux 시스템이나 C 라이브러리의 함수입니다. 일반 함수의 이름을 이렇게 지정하지 않는 것이 좋습니다.

Char, 함수 이름이 될 수 없으며 문자 기반 키워드입니다.

+,할 수 없습니다. 덧셈의 연산자입니다.

CreateWindowEx 는 함수 이름으로 사용할 수 있으며 전형적인 헝가리 스타일인 Microsoft 코드로 보입니다. (웃음) 이 함수는 windows 시스템에서 창을 만드는 API 입니다.

헝가리 스타일의 코드는 마이크로소프트의 유행 스타일이다. 함수 이름은 하나 이상의 영어 단어로 명명됩니다. 각 단어의 첫 글자는 대문자로, 다른 글자는 소문자로 명명됩니다.

그러나 Linux 코드 (타사 소프트웨어 포함) 는 고대 C 코드의 밑줄 스타일을 그대로 유지하며, 글자는 모두 소문자로, 단어는 밑줄로 구분하며, 더 많은 약어를 사용합니다.

간혹 약어 뒤에는 몇 글자만 남았고, 직접 새로운 단어를 함수 이름으로 구성하기도 한다.

예를 들어 Linux 에서 새 프로그램을 시작하는 함수 executable () 은 약어입니다.

실행할 영어 단어는 execute 이고, windows 의 실행 프로그램은 exe 파일이라고 합니다. 즉, 이 단어의 처음 세 글자인 Linux 도 이 세 글자를 선택했습니다.

세 글자 CVE 를 사용하여 주 함수의 전체 매개 변수 목록:

Int main(int argc, char* argv[], char * envp);

Main 함수의 전체 선언은 이렇습니다. int main () 은 간소화된 버전입니다.

첫 번째 인수인 argc 는 main 함수에 전달된 인수의 수를 나타냅니다. 명령줄 인수로 전달됩니다. Arg 는 매개변수 argument 의 약어이고 c 는 count 이며 매개변수 수입니다.

Argv 는 main 함수에 전달되는 인수 문자열 배열이고 v 는 vector 입니다.

Envp 는 환경 변수 환경 경로의 경로입니다.

따라서 main 을 시작하는 시스템 호출을 StartProgram () 이 아닌 executable () 이라고 합니다.

후자는 분명히 이해하기 쉽지만 글자가 많기 때문에 시스템에서 호출하는 API 도 한 눈에 프로세스를 시작하는 것을 알 수 있는 것은 아니다.

처음에 main () 함수는 Linux 의 executable () API 에 의해 시작된 다음 main 함수에 의해 직접 또는 간접적으로 다른 함수를 호출합니다.

메인 함수에 의해 호출되지 않은 (직접 또는 간접) 함수는 실행되지 않습니다.

위에 표시된 코드는 add 만 인쇄합니다. main 은 sub () 함수가 아닌 add () 함수만 호출하기 때문입니다.

이 간단한 코드는 이 세 가지 함수만 있고 sub () 는 호출되지 않았습니다.