this는 객체지향 언어에서 class instance 자신을 나타냅니다. 자기 자신이기 때문에 별도의 이름을 갖는 다는 것도 좀 이상하기 때문에 this라는 키워드는 정말 잘 정한 것 같습니다. C언어 에서 this라는 것을 활용해서 사용해보도록 하겠습니다. 다음과 같은 main.c 코드가 있습니다. uart 드라이버 포인터를 얻어와 uart를 open하고 read, write, close하는 일을 절차적으로 진행하고 있습니다. /* main.c */ void main(void) { driver_t *uart = set_uart(); char value; uart->open(); uart->read(0, &value); uart->write(0, &value, 1); uart->close(); } 사용..
시간이 지나니 이전글에서 많은 부족함이 느껴 다시 한번 글을 쓰기로 했습니다. this는 객체지향 언어에서 class 자신을 나타냅니다. 자기 자신이기 때문에 별도의 이름을 갖는 다는 것도 좀 이상하기 때문에 this라는 키워드는 정말 잘 정한 것 같습니다. 우리는 C에서 this라는 것을 활용해서 사용해보도록 하겠습니다. 다음과 같은 main.c 코드가 있습니다. uart 포인터를 얻어와 uart를 open하고, read, write, close하는 일을 절차적으로 진행하고 있습니다. 사용자의 입장에서는 사용하는 기능을 구현하는 객체의 이름을 알고 있어야 합니다. 따라서 여기서는 uart라고 명시했습니다. uart의 header 파일입니다. driver_t라는 interface를 정의하고 본체 코드에서..
Java에서 this, Objective-C에서 self 등등 클래스내에서 사용할 수 있는 예약어 통칭 this는 자기 자신의 클래스를 의미합니다. C언어에서는 this가 없습니다. 왜냐하면 클래스라는게 없으니 당연히 없습니다. 클래스는 메모리 자료형에 멤버함수가 존재하는 하나의 타입입니다. 그 타입으로 새로운 instance를 생성하여 사용하게 됩니다. 물론 C에서는 Java처럼 마구 instace를 찍어만들어 낼 수는 없지만(일일히 멤버함수를 assign 해주어야 함), 여러가지의 노력으로 비슷하게 만들어 낼 수 있습니다. 이러한 this는 참 탐나는 기능인건 확실합니다. C에서는 변수나, 함수의 출처를 찾기가 어렵습니다. 전역변수, 함수인 경우 특히 더합니다. 본인이 작성한 코드는 알 수 있겠지만,..