• thread_local

변수의 존속시간이 쓰레드의 존속 시간과 같다는 제한자

 

존속시간은 예를들어

정적 변수의 존속시간은 프로그램이 실행되고 종료될때까지이다

 


  • volatile
volatile : 변덕스러운
변덕 : 이랬다저랬다 잘 변하는 태도나 성질

개념 : 간단히는 최적화를 수행하지 못하게 막는다, 라고 할수있고

         자세히는 volatile 변수를 참조할때 레지스터에 로드 된 값을 사용하지 않고 항상 메모리를 직접 참조 한다

 

최적화를 왜 막아야하는가? 

최적화로 인해서 생략된 코드때문에 개발자가 의도한대로 흘러가지 않는 경우도 있는 듯 하다

 

https://luna-archive.tistory.com/2

 

[C] 임베디드 시스템에서 volatile 키워드를 사용하는 이유

MCU 프로그래밍을 하다 보면 레지스터를 제어하기 위해 같은 주소에 여러번 값을 여러번 쓰는 경우가 빈번하고, 이런 경우 코드를 보면 앞에 volatile 키워드를 사용하는 경우를 볼 수 있다. 처음

luna-archive.tistory.com

https://blog.naver.com/PostView.nhn?isHttpsRedirect=true&blogId=classic2u&logNo=50003118713&parentCategoryNo=&categoryNo=15&viewDate=&isShowPopularPosts=false&from=postView

 

이 두 글에 자세히 나와있다

 

최적화가 일어나지 않으므로 코드가 생략되지 않고 모두 직접 메모리에 실행되어 값이 변할수도 있기에

변덕스러운 이라는 뜻이 어울린다고 생각한다

 

일단 이 개념은 여기까지

 


  • mutable

개념 : const 구조체 또는 const 클래스의 멤버지만 변경가능한 멤버변수를 선언할때 사용한다

 

 


  • const의 내부링크

기본 전역 변수는 외부링크로 디폴트가 되어있다

 

하지만 const가 붙으면 내부링크로 변경된다

 


  • 함수와 링크

함수역시 링크 속성을 가진다

 

모든 함수는 정적기억존속을 가진다.(프로그램의 시작과 끝까지) = 외부링크

 

static을 사용하여 내부링크를 부여 할 수 있다

 


  • 단일 정의 규칙

프로그램은 인라인이 아닌 모든 함수에 대해서 정확히 하나의 정의만을 가져야한다

+ Recent posts