C언어 복습(21)
-
POCU C언어 정주행 - 마치며
우선 이 강의를 정주행한 나는 이 강의를 정주행하기 전에 대학교 4학년을 모두 다니고 부족함을 느껴서 복습을 할 겸 강의를 시청한 것이라고 이야기하려 한다. 이 이야기를 하는 이유는 완전히 아무것도 모르는 사람들 중에서 동영상 강의만으로 C언어를 마스터하려고 할 수 있기 때문이다. 분명하게 이야기하면 이 동영상 강의는 그런 용도가 아니다. 자신있게 이야기할 수 있는 것은 나처럼 어느 정도 뭔가를 배워놓은 사람이 C언어에 대해서 아주 깊게 파고들기 위해 만든 강의이고 오죽하면 선수 과목이 무엇이 있는지 대놓고 명시하고 있을 정도이다. 그리고 나는 처음 POCU 아카데미의 C 언매니지드라는 강의를 접하기 전부터 선수 과목에 대한 지식을 갖추고 있었던 입장으로 이 강의를 평가하고자 한다. 결론부터 말하면 정말..
2023.01.14 -
POCU C언어 정주행 20회차 - Type-Generic, 정적 어서트, 메모리 정렬, 멀티 스레딩
1. Type-Generic 보통 Type-Generic이라고 하면 데이터의 자료형을 일반화하는 것을 의미한다. 다시 말해서 어떤 함수에 대해서 Type-Generic을 시킨다고 하면 해당 함수를 호출하는 것에 있어서 데이터 자료형과 상관없이 호출이 가능하게 되는 것이다. 그동안 C에는 이런 것이 불가능했지만 C11에서 매크로 함수를 이용해서 이런 것들을 지원할 수 있게 되었다. 를 보면 컴파일러에서 Type-Generic으로 된 몇몇 수학 관련 함수를 제공한다. C11에 들어오면서 이런 몇몇 수학 함수들을 프로그래머가 직접 구현할 수 있게 된 것이다. _Generic(, ) 위와 같이 사용하며 제네릭 선택이라고 부른다. switch문과 비슷한 생김새를 가지고 있는데 컴파일 도중에 어떤 자료형을 사용하는..
2023.01.12 -
POCU C언어 정주행 19회차 - C11 유니코드, 베스트 프랙티스
1. C11 유니코드 이 글부터 C11에서 들어온 기능들을 소개할 예정이다. 이전 글에서 유니코드와 wchar_t에 대해서 알아봤는데 여기에 나오는 문자열 관련 내용들은 전부 C11에서 들어온 내용이다. 우선 이전 글과 이어지는 내용이라 이전 글에서 어떤 내용을 다뤘는지 간단하게 알아보자면 wchar_t에 대해서 다뤘고 단점이 뭐였는지도 알아보았다. 하지만 결론은 ICU를 사용하거나 wchar_t로 데이터를 주고 받는 데 있어서 두 기계가의 포팅이 가능하도록 변환을 할 수 있는 방법을 마련해야 한다는 것으로 끝났었다. 그래서 C11로 넘어오면서 wcahr_t을 대체할만한 것으로 유티코드가 떠오르게 된 것이다. UTF-32, UTF-16같은 것들은 크기가 고정되어 있기 때문에 멀티 바이트로 변환시킬 때 w..
2023.01.12 -
POCU C언어 정주행 18회차 - 멀티바이트, wchar_t
1. 멀티바이트 C언어는 기본적으로 문자열 처리가 다른 언어에 비해서 굉장히 구리다... 그래서 이전 글에서 C99의 기능들의 리스트를 쭉 나열하고 대충 요약하고 넘어갔는데 이 부분은 굉장히 중요한 부분으로 보여서 그럴 수 없었다. 또한 이 글부터는 C99를 기준으로 글을 쓸 것이며 예제 코드 역시 그럴 것이다. C언어는 어떤 방식으로 다국어를 지원할까? 아마 다들 머릿속으로 유니코드를 떠올릴 것인데 C99부터 유니코드를 지원하게 되면서 변수 이름(...왜?)과 문자열로 유니코드에 포함된 문자를 사용할 수 있게 되었다. 단, 여기서 말하는 것은 소스 파일을 특정 유니코드 인코딩으로 저장하는 것이 아니라 소스 코드 안에 직접 유니코드 코드 포인트를 작성하는 방식이라고 한다. 이걸 유니버셜 문자 이름(Uni..
2023.01.09 -
POCU C언어 정주행 17회차 - restrict, C99 기능
1. restrict 이번 키워드도 C99부터 추가된 기능이다. restrict는 어떤 범위를 제한한다는 뜻을 가지고 있다. 그럼 실제로 C에서 restrict는 어떤 기능일까? 강의에서는 문자열 복사에 대한 상황을 예시로 들면서 restrict에 대해서 설명했다. 다들 C언어를 배우면서 문자열을 복사하는 함수를 만들어본 경험이 있는가? 만들어본 적은 없어도 사용해본 적은 있을 것이다. C에서 문자열 복사 함수를 사용할 때 혹시 아래의 그림과 같은 생각을 해본 적이 있는가? 문자열 함수는 src와 dest를 매개 변수로 받는데 인자로 그림과 같이 전달하면 어떻게 될까? 아래의 두 개의 그림 중 하나의 결론이 나올 것이라고 생각할 수 있다. 1. 문자열이 그대로 덮어 써진다. 2. 원래 문자열이 그대로 복..
2023.01.07 -
POCU C언어 정주행 16회차 - inline 함수, inline 주의점, 해결 방법
1. inline 함수 C/C++을 배웠던 사람이라면 다음과 같은 반응을 보일지도 모른다. '아니, inline 함수는 C++에 있는 기능 아니었어? C에도 있다고?' 그렇다! C에도 inline이 존재한다. 정확히 말하면 원래 C++에 있던 inline 함수를 C99로 가져온 것이다. 그래서 C99부터는 inline 함수를 지원한다. 그리고 Intro에서 C89를 기준으로 글을 작성한다고 나와있을텐데 이번 글부터 다룰 내용은 C99에서 추가된 내용을 다룬다. 어쨋든 inline 함수에 대해서 알아보자. inline 함수를 배울 때, 보통 매크로 함수에 대해서 먼저 다루는 경우가 많다. 왜냐하면 inline 함수를 잘만 사용하면 매크로 함수의 단점을 해결해주기 때문이다. 우선 매크로 함수의 대표적인 특징..
2023.01.07