며칠전부터 iPhoto 업데이트 하라는 메시지가 나왔는데, 계속 미루다 오늘 "업데이트" 선택을 했다.

AppStore 프로그램이 시작되면서 <업데이트>화면이 나오는데,

"사용 가능한 업데이트 없음"

이라고 나왔다.

얼른 구글링해보니 "언어" 기본선택을 "영어"로 하면 된다는 힌트를 얻었다.

설정이후 리부팅하고나니, AppStore 의 <업데이트>화면에서 업데이트가능한 항목이 나타난다.

iMovie, iPhoto, Numbers, Pages 네가지 항목.


Posted by Jason Ryu
,

구조체 내의 멤버변수들의 옵셋위치를 구하는 매크로.

멤버변수들의 데이터형은 컴파일 옵션에 따라 그 크기가 달라질 수 있는데다가,

변수의 순서에 따라 옵셋은 컴파일시에 최적화되어 결정되므로 그 값은 계산하기 참 복잡스럽다.

일반적인 프로그래밍 상황에서는 쓸일이 없는 매크로긴 하다.^^


#define STRUCT_FIELD_OFFSET(type, field)    \

    ((unsigned int)(((char *)(&(((type*)NULL)->field)))-((char *)NULL)))

/* type: 구조체 타입명, field: 멤버변수명 */


#define MAX_LEN    128

struct Sample_struct {

    char *              cp_1st_field;

    int                     i_2nd_field;

    unsigned short  us_3rd_field;

    char                  ca_4th_field[MAX_LEN];

    unsigned short  us_5th_field;

    void*                 ptr_6th_field;

};

typedef struct Sample_struct sample_t;


저 구조체의 각 멤버들의 옵셋값을 눈으로 계산하긴 거시기하다.

더구나 그 안에 구조체가 또 들어있으면 그냥 포기하는게 낫다.

이럴때 써먹을 매크로이긴 한데.......

예전에는 코드최적화나 자동화코드, 호환성 이따위를 고려할때 종종 써먹었는데...이제는.....


마땅히 써먹을만한 곳은 생각이 안남. 

요즘은 그런 코드 작성할 일이 없다. 요구하지도 않고...그럴 이유도 찾을수가 없다.



Posted by Jason Ryu
,