긴 이름의 옵션을 파싱하는 C함수, getopt_long()

긴 이름 옵션 파싱함수 getopt() 함수는 비교적 사용이 쉬운데, 보통 명령행 유틸리티들은 옵션을 보다 명확하게 인지할 수 있는 긴 이름의 옵션들을 지원한다. 예를 들어 출력파일을 결정할 때 -o outfile로 쓰는 대신 –output outfile로 쓰게끔 허용하는 것이다. 이 기능은 getopt_long()이라는 함수를 통해 지원할 수 있다. 긴 이름 옵션은 하나의 문자열에 망라하기 어려우므로 별도의 구조체를 사용하여 옵션 정보를 마련해두고 이 구조체의 배열을 사용하는 방식으로 처리한다. 그러면서 인터페이스는 좀 달라지지만, 사용하는 방식은 거의 유사하다고 보면 된다.

C/C++ : 가변 인수 매크로 함수 구현

va_args in c 예전에 가변 인수를 받는 C 함수를 만드는 법을 간단히 살펴본 적이 있는데, 오늘은 좀 더 자세히 알아보자. C 언어에서 복수 인자를 받는 함수는 다음과 같이 선언한다. 반환형 함수명(고정인자[, 고정인자] ,….); 최소 1개 이상의 고정인자가 있고, 그 이후에 …을 써서 추가적인 인자를 더 받는다는 것을 알려준다.

파일로부터 한줄 씩 읽기

파이썬 가장 일반적으로 파일을 한 줄씩 읽어들이는 방법은 다음과 같다. with open(‘filename.txt’, ‘r’) as f: for line in f: pass # line은 읽어들인 각 줄 하지만 이 방법은 파일을 한 번에 메모리로 읽어들인 다음, 한 줄씩 스캔한 결과를 돌려주기 때문에 수 기가짜리 로그 파일을 이런 식으로 처리하면 문제가 생긴다.

[ObjC] 윈도 + GNUStep + Clang 사용시 몇 가지 알아 둘 점

프로퍼티의 backing storage variable을 반드시 명시적으로 선언해야 함 말 그대로, 프로퍼티를 설정할 때 이 값이 담길 인스턴스 변수를 명시적으로 선언해야 한다. 옛날 iOS 관련 책을 보면 그런 식으로 코드가 되어있는데… @interface Person : NSObject { NSString *firstName, *lastName; } @property (copy, nonatomic) NSString *firstName; @property (copy, nonatomic) NSString *lastName; @property (readonly) NSString *fullName; @end iOS4로 넘어오면서 부터인가 변수를 중괄호 안에 선언해 줄 필요가 없어졌다. 이는 Objective-C 런타임이 자동으로 변수를 선언해주기 때문인데, GNUStep의 런타임은 아직 구형이라 변수는 선언해줘야 한다. (컴파일러가 해주는

[새로 작성된] iOS에서 SQLite3 사용방법

예전에 쓴 글이 있기는 하지만, 그냥 요리법처럼 쓴 글이기도 하거니와 소스코드에서 뭔가 글자가 빠지는 등(syntax highlighter를 안써야 겠지만 기존 글 고치기가 귀찮아…) 문제가 많아 내용을 보충해서 다시 작성. 애플은 SQLite3를 직접 인터페이스하는 것보다는 코어데이터를 사용하라고 권장하고 있고, (실제로 있다가 빠진 것인지는 알 수 없으나 그런 주장을 하는 사람들이 종종 있다) 애플 개발자 문서에서도 관련 내용을 내렸다고 한다. (하지만 이는 사실이 아닐 거라 생각한다. 왜냐면 iOS에서 SQLite3를 인터페이스 하는 부분은 전적으로 libsqlite3를 사용하는 것이고, 이에 대한 문서는 SQLite3 홈페이지에 가면 있기