On 09/03/2013 02:11 PM, chru...@suse.cz wrote:
> Hi!
>> Sorry, but is it possible to use #ifdef or #if inside a #define macro?
> Right it does not, sorry. I tend to forget how dumb it the C preprocessor is.
>
>> This doesn't work:
>>
>> #define MYDEF(NN) \
>> # ifdef TST_USE_COMPAT16_SYSCALL
>>           return NN(0);
>> # else
>>           return NN(1);
>> # endif
>>
>> MYDEF(bla)
> We need to pull the first if out of the macro and we can do the second
> one as a regular if (it will be optimized away anyway).
>
> #ifdef TST_USE_COMPAT16_SYSCALL
> # define LTP_CREATE_SYSCALL(sys_name, ...) \
>       if (__NR_##sys_name##32 != __LTP__NR_INVALID_SYSCALL) { \
>               return ltp_syscall(sys_name, ##__VA_ARGS__); \
>       } else { \
>               errno = ENOSYS; \
>               return -1; \
>       }
> #else
> # define LTP_CREATE_SYSCALL(sys_name, ...) \
>       return sys_name(__VA_ARGS__)
> #endif
>
>
> The usage will be:
>
> int SETGROUPS(size_t size, const GID_T *list)
> {
>       LTP_CREATE_SYSCALL(getgroups, size, list);
> }
>
> Does this sound reasonable?
>
Thanks. I'm rewriting.


------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk
_______________________________________________
Ltp-list mailing list
Ltp-list@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ltp-list

Reply via email to