목록static (2)
no swim no life
코딩 중 macro 만으로 처리 하기에 아쉬운 부분이 있다. 이 때 inline의 이용을 생각해 볼 수 있는데, inline을 그대로 사용하려 하면서 아차~ 싶은 부분이 선언한 inline 함수의 scope이다. 그래서 확인해 본 결과... static 선언과 상관없이 해당 파일 내에서 inline 함수의 기능은 동일하지만, static에 의한 scope 제한이 없다면 다른 파일에서 호출 가능한 일반 함수가 추가(추가인지, inline 선언이 배제된 것인지 확인이 필요)로 생성된다. 아마도 이런 상황을 노리고 inline 선언을 하지는 않을 것이라 예상하기 때문에, 이것은 대부분 기대하지 않은 코드일 것이다. 그리고, 정의한 inline 함수와 동일한 일반 함수가 생성된 경우, (또는 inline 기능이..
변수의 종류 전역변수 정적변수(static) 자동변수(지역변수, 매개변수) 외부변수(extern) 저장공간의 종류 코드영역 데이터영역: 전역변수, 정적변수, 초기화된 배열과 구초제 힙영역: malloc(), new 동적메모리할당, 포인터 스택영역: 자동변수, 복귀번지, 배열, 포인터변수 extern 전역변수는 프로젝트 내의 동일한 메모리 공간을 사용한다. extern으로 declaration 해야 되는곳에 값을 넣게 되면 definition이 되어 링크 에러가 발생할 수 있다. file_a.c int test = 3; file_b.c extern int test; // declaration extern int test = 3; // definition 전역변수는 각각의 오브젝트 파일마다 메모리 공간을할당..