본문 바로가기

inline 함수 by MSDN 인라인 함수에 대해 자꾸 잊어버리는 문제때문에 간략하게 적어두겠습니다. 인라인 함수는 매크로함수(간단한 예로 #define third(x) x*x*x )와 같이 치환하여 처리해주는 함수입니다. 매크로함수는 치환함수로서 호출하면 바로 치환하여 처리를 수행합니다.(보통 함수를 호출하면 호출한 함수로 분기가 넘어가 수행하고 함수가 종료되면 원래 코드로 돌아와서 마저 수행을 하죠.) 반면 인라인함수는 치환함수의 성격도 보통 함수의 성격도 가지고 있습니다.(반반무많이?)개발자가 인라인 함수라고 정의를 해두면 컴파일러가 비용을 계산하여 매크로함수로 둘지, 일반함수로 둘지 결정합니다. MSDN의 정확하지만 어려운 표현을 빌려보겠습니다. (좀 축약했습니다.)inline / __inline 으로 명시한 함수는 함수가 호.. 더보기
다음 사전의 FAMOUS SAYING 더보기
C feof 함수에서 알아두고 넘어갈 부분 C에서 파일 읽기를 할때 feof로 파일의 끝을 알아내는 함수를 사용합니다.그래서 코드를 이렇게 작성하게 됩니다.while ( feof(fp) == 0 ){fscanf(fp, "%d", &read);fscanf(fp, "%c", &c);if ( read != 0 ){add_node_list(read);}read = 0;} 이 코드를 보면 feof의 리턴값이 0인 상태, 즉 아직 파일의 끝이 아닐 때는 파일에서 내용을 읽어옵니다.그러면 파일에서 마지막 내용을 읽어 왔을 때 함수를 정지할 것이라 예상할 수 있겠죠? 그런데... 사실 돌려보면 한번 더 읽어오지는 않지만 이전에 있었던 값이 남아 있어서 if ( read != 0 ) 이 조건문이 아니라면 add_node_list()는 한번 더 동작하게 됩니다.왜.. 더보기
MSDN없이 코딩하는건... 정말 너무 힘들어요...파일 입출력 관련 함수들을 어떻게 사용하는지 잘 기억이 안 나서...파라미터 값 요리조리 바꿔가면서 어떻게 읽어오는지 어떻게 쓰는지 하나씩 테스트해보는 이 괴로운 느낌... 파일에서 쓰기한줄 할려고 몇십분을 요리조리 인자값 바꿔 보다가.... 단순한 fprintf를...허허 더보기
Sleep대신 이렇게도 써볼까? void delay(clock_t n){ clock_t start = clock(); while(clock() - start < n);} 동기화의 문제는 좀 더 공부해야겠지만 아무튼 sleep을 쓰는 습관보단 저렇게 함수를 정의해서 따로 쓰는게 더 좋을 것 같다. p.s. 2016-02-02 연습용으로, 학습용으로만 추천한다. 시스템에게는 정제되지 못한 코드가 문제를 일으킬 수 있기 때문에... 라이브러리의 정제된 코드를 사용하는게 더 안정적일 것이다. 더보기