之间的区别我在编译我的程序,它将在linux gcc 4.4.1 C99上运行。#if defined(WIN32)和#ifdef(WIN32)
我只是把我的#defines分开,将在Windows或Linux上编译的代码。但是,我得到了这个错误。
error: macro names must be identifiers.
使用此代码
#ifdef(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
然而,当我改变了这个错误是固定的:
#if defined(WIN32)
/* Do windows stuff
#elif(UNIX)
/* Do linux stuff */
#endif
我只是想知道,为什么我得到的错误,为什么#define语句是不同的?
非常感谢,
是的,但你也可以级联的#ifdef UNIX与WIN32的#ifndef,并获得相同的灵活性(而不是可读的,我同意) – jpinto3912 2009-11-11 11:42:57
@ jpinto3912但如果只有他们只是变得更加多毛用''|| – Aidiakapi 2016-01-05 18:18:51
从头开始'#if defined(NAME)'并避免创建'#ifdef'语句。 – Andy 2018-02-20 07:47:24