سلام
آقا من که عقلم به جایی راهنمیده ! کسی میتونه بفهمه این یک تیکه کد چی چی داره میگه :
#define __READ_SPECMEM(SRC, SRC_V) \
(addr = (SRC), \
(spec_mode \
? spec_mem_access(Read, addr, &SRC_V, sizeof(SRC_V)) \
: mem_access(Read, addr, &SRC_V, sizeof(SRC_V))), \
SRC_V)
البته خوب فکر کنم مشخصه که جای READ_SPECMEM میاد و اون یک تیکه کد رو می گذاره اما اگر فرض کنیم , (کاما) هم تو دستورات Pre-Compile معادل ; (سمیکولون) خودمونه خط آخرش اصلا معنی نمیده !
سلام
آقا من که عقلم به جایی راهنمیده ! کسی میتونه بفهمه این یک تیکه کد چی چی داره میگه :
#define __READ_SPECMEM(SRC, SRC_V) \
(addr = (SRC), \
(spec_mode \
? spec_mem_access(Read, addr, &SRC_V, sizeof(SRC_V)) \
: mem_access(Read, addr, &SRC_V, sizeof(SRC_V))), \
SRC_V)
البته خوب فکر کنم مشخصه که جای READ_SPECMEM میاد و اون یک تیکه کد رو می گذاره اما اگر فرض کنیم , (کاما) هم تو دستورات Pre-Compile معادل ; (سمیکولون) خودمونه خط آخرش اصلا معنی نمیده !
منم به یه همچین کدی برخورد کردم. تا جایی که من می دونم، این کد معادله با این کد:
#define __READ_SPECMEM(SRC, SRC_V) \
do { \
addr = SRC; \
spec_mode ? spec_mem_access(READ, addr, &SRC_V, sizeof(SRC_V) : mem_access(Read, addr, &SRC_V, sizeof(SRC_V)) \
SRC_V; \
} while(0)
و اگه این قضیه درست باشه، خط SRC_V; اصلا کامپایل نمیشه!
من کد زیر رو کامپایل کردم:
int a = 1;
a;
هیچ کد اسمبلی به ازای خط آخر تولید نمیشه!
این فرضیه هم که ممکنه خروجی تابع باشه رد میشه چون کدی که من دیدم تابعش هیچ خروجی نداشت.
شاید اگه توی یه فروم تخصصی C بپرسی زودتر جواب بگیری.
به هرحال اگه جوابشو پیدا کردی به ما هم یه خبرب بده ;)