Facebook의 HAXL소개에 늘 나오는 대표적 예제
2016년 2월 4일 목요일
#define BITS_TO_BYTES(bits) ((bits)/8 + !!((bits)%8))
C에서 비트필드배열 만들 때 쓸만할 것 같음.
#define BITS_A 5
#define BITS_B 3
#define BITS_C 2
char bitfield[BITS_TO_BYTES(BITS_A + BITS_B + BITS_C)];
2014년 3월 21일 금요일
do-while one-liner
List<E> cached = new ArrayList<E>(); do cached.add(persistableResource.loadFrom(cursor)); while (cursor.moveToNext()); return cached;
이 코드에서 특히한 또다른 점은 try-finally 짝을 적극적으로 사용한다는 점이다.
2012년 7월 9일 월요일
list_entry 매크로
#define list_entry(ptr, type, member) \
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
리눅스 커널에 사용된 링크드리스트에서 제공하는 매크로. list_node 포인터로부터 원래 구조체의 포인터를 얻기 위해 사용한다.
((type *)((char *)(ptr)-(unsigned long)(&((type *)0)->member)))
리눅스 커널에 사용된 링크드리스트에서 제공하는 매크로. list_node 포인터로부터 원래 구조체의 포인터를 얻기 위해 사용한다.
2011년 11월 3일 목요일
Arithmetic on Functions
(sin 2.5)
#| .5984721441039565 |#
(square 2.5)
#| 6.25 |#
((+ sin square) 2.5)
#| 6.848472144103956 |#
((+ (square sin) (square cos)) 2.5)
#| 1. |#
Jerald Sussman 이 2011년 Strange Loop에서 발표한 자료에 위와 같은 예제가 살짝 소개된다. 이렇게 하려면 +를 재정의해줘야 겠지만, 이렇게 할 수 있다는 것이.. 흠..
그러나 J에서는 이미 아무 문제 없이 가능한 이야기이다.
cos=:2&o.
sin=:1&o.
square=:*:
sin 2.5
0.598472
square 2.5
6.25
(sin + square) 2.5
6.84847
( square@sin + square@cos ) 2.5
1
참고 1. https://thestrangeloop.com/sessions/we-really-dont-know-how-to-compute
2011년 10월 12일 수요일
define extern
#define extern
#include "externs.h"
externs.h에 선언된 extern 변수의 정의위치를 찾으려는데 도저히 찾을 수 없는가? 위처럼 되어 있지는 않은지 찾아보라. 누군가는 이렇게라도 중복을 제거하고 싶었을지 모른다. (혹시 따라하는 사람 없겠지?)
피드 구독하기:
글 (Atom)