static으로 선언해주면 프로그램이 시작될때부터 메모리 공간을 잡아놓고 시작합니다. dynamic이라불리는 보통의 변수 선언과는 차이가 있죠
dynamic으로 선언한 일반적인 변수들은 프로그램이 실행될 때마다 메모리 공간을 잡을 수도 있고 그렇지 않을 수도 있고 그런거죠... 그러나 static 변수는 미리 프로그램이 실행될때 잡혀있으므로 그 프로그램내에서는 어디에서나 참조가 가능합니다(그러나 통용적으로 한 함수 안에서만 사용합니다). 처음에 한 번만 초기화되므로 여러 다른 함수들에서 그 값을 변화시키면 누적되서 변화된다는 얘기입니다.
아래는 MFC 도움말입니다.
naked
Microsoft Specific —>
__declspec( naked ) declarator
For functions declared with the naked attribute, the compiler generates code without prolog and epilog code. You can use this feature to write your own prolog/epilog code using inline assembler code. Naked functions are particularly useful in writing virtual device drivers.
Because the naked attribute is relevant only to the definition of a function and is not a type modifier, naked functions use the C++ Extended Storage-Class Attributes syntax.
For related information, see __declspec The naked Attribute Argument Passing and Naming Conventions Naked Function Calls.
Example
This code defines a function with the naked attribute:
// Example of the naked attribute
__declspec( naked ) int func( formal_parameters )
{
// Function body
}
END Microsoft Specific
남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.
static...
static으로 선언해주면 프로그램이 시작될때부터 메모리 공간을 잡아놓고 시작합니다. dynamic이라불리는 보통의 변수 선언과는 차이가 있죠
dynamic으로 선언한 일반적인 변수들은 프로그램이 실행될 때마다 메모리 공간을 잡을 수도 있고 그렇지 않을 수도 있고 그런거죠... 그러나 static 변수는 미리 프로그램이 실행될때 잡혀있으므로 그 프로그램내에서는 어디에서나 참조가 가능합니다(그러나 통용적으로 한 함수 안에서만 사용합니다). 처음에 한 번만 초기화되므로 여러 다른 함수들에서 그 값을 변화시키면 누적되서 변화된다는 얘기입니다.
아래는 MFC 도움말입니다.
naked
Microsoft Specific —>
__declspec( naked ) declarator
For functions declared with the naked attribute, the compiler generates code without prolog and epilog code. You can use this feature to write your own prolog/epilog code using inline assembler code. Naked functions are particularly useful in writing virtual device drivers.
Because the naked attribute is relevant only to the definition of a function and is not a type modifier, naked functions use the C++ Extended Storage-Class Attributes syntax.
For related information, see __declspec The naked Attribute Argument Passing and Naming Conventions Naked Function Calls.
Example
This code defines a function with the naked attribute:
// Example of the naked attribute
__declspec( naked ) int func( formal_parameters )
{
// Function body
}
END Microsoft Specific
남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.
static 변수에 대한건 윗분 설명이 맞구요, static 함수는 클래
static 변수에 대한건 윗분 설명이 맞구요, static 함수는 클래스 내의 static 멤버들만을 억세스할수 있는걸로 알고 있습니다. 좀 헛갈리죠.
그리고 naked는 함수의 진입/진출부에 늘상 알아서 붙여주는 코드들을 직접 작성할때 붙여주는걸루 알고 있습니다.
=-=-=-=-=-=-=-=-=
http://youlsa.com
제가 알기로는,1) static global variable은,
제가 알기로는,
1) static global variable은, external linkage를 갖지 않습니다. 곧, 외부 모듈에서 extern 키워드로 링크하여 사용하는 것이 불가능합니다.
2) static local variable은, 로컬 스코프를 갖는 변수를 전역 데이터 영역에 단 1번 생성합니다. 결국 함수의 호출 사이에서 수명이 유지됩니다.
3) static function은 external linkage를 갖지 않습니다. 결국, 외부 모듈에서 link하여 사용하는 것이 불가능합니다.
4) static member variable은, 클래스 스코프를 갖는 변수를 전역 데이터 영역에 단 1개 생성합니다. 결국 같은 클래스의 모든 객체 사이에 공유가 되는 변수가 됩니다.
5) static member function은 윗분 말씀대로, 객체의 static data member만을 참조할 수 있습니다.
static 키워드는 참으로 많은 곳에 붙일 수 있지만, 각 용법에서의 context가 판이하게 달라서 참으로 헷갈리는 키워드죠 -_- orthogonal하긴 하지만.. 읽기는 어렵다고나 할까요 -_-;;
..
^^;;
죄송... 저의 실수입니다^^;;
예를 들어...
이런 함수를 메인함수에서 3번 호출한다면 static으로 선언된 변수에 대한 출력은 1,2,3으로 나타나고 dynamic변수에 대한 출력은 계속 1,1,1로 나타날 것입니다. 왜냐하면 static 변수는 한 번만 초기화 되기 때문입니다.
참고하세요~^^;;
남으로 창을 내겠소.
밭이 한참갈이 괭이로 파고 호미론 김을 메지요.
구름이 꼬인다 갈리있소. 새들의 노래는 공으로 들으랴오.
강냉이가 익거든 와자셔도 좋소.
왜 사냐건 웃지요.
댓글 달기