한 동료가 memcached에 약간의 C 코드를 설명하라고했습니다. 나는 내가 그것을 이해하지 못한다는 것을 인정하는 시점에있다.인수 목록이 있지만 대체 목록이없는 함수와 비슷한 매크로입니까?
대체 목록이없는 매개 변수가있는 C 함수와 비슷한 매크로 정의와 관련이 있습니다. 예를 들어, 2,751 memcached.c의 선에서 시작 :
if (return_cas)
{
MEMCACHED_COMMAND_GET(c->sfd, ITEM_key(it), it->nkey,
it->nbytes, ITEM_get_cas(it));
/* Goofy mid-flight realloc. */
if (i >= c->suffixsize) {
char **new_suffix_list = realloc(c->suffixlist,
sizeof(char *) * c->suffixsize * 2);
if (new_suffix_list) {
c->suffixsize *= 2;
c->suffixlist = new_suffix_list;
MEMCACHED_COMMAND_GET() trace.h 선 (23) 상에 정의된다 인수
#define MEMCACHED_COMMAND_GET(arg0, arg1, arg2, arg3, arg4)
C 매크로 기능과 같은 정의를 확인. 대체 목록이 없습니다.
memcached.c에 CPP의 출력은 함수와 같은 매크로로 변신을 보여줍니다 ';'
이# 2751 "memcached.c"
if (return_cas)
{
;
if (i >= c->suffixsize) {
char **new_suffix_list = realloc(c->suffixlist,
sizeof(char *) * c->suffixsize * 2);
if (new_suffix_list) {
c->suffixsize *= 2;
c->suffixlist = new_suffix_list;
사람이 프로그래머가 대체리스트를 사용하지 말고, 기능과 같은 매크로를 포함 왜 어떤 통찰력을 가지고 있습니까 생성 된 코드에 아무런 영향을주지 않는 MEMCACHED_COMMAND_GET() 같은? 이 일을하면서 어떤 목적이 제공되고 있습니까? 친절하게 미리 감사드립니다.
이 질문은 http://stackoverflow.com/questions/5501990/what-can-the-macros-below-be-used-for – Jason
@ Jason Excellent, 감사합니다. 그건 의미가 있습니다. 필자는 MEMCACHED_COMMAND_GET 자체에서 검색 할 생각이 전혀 없었으며 "함수와 유사한 매크로"를 포함하는 검색어 만 생각했습니다. 나는 네가 올바른 방향으로 나를 가리켜 주셔서 감사합니다. –