#if defined(_WIN32)
#if !defined(_CRT_SECURE_NO_WARNINGS)
#define _CRT_SECURE_NO_WARNINGS
#endif
因此,以上是某些项目文件中的C语言代码的前4行。
我确实知道#if定义(宏名)的意思是,如果定义了宏,则表达式的值为1,否则为0。
因此,基本上,前两行将为1或0,但是它们会做什么?只是一个人坐1还是0?
答案 0 :(得分:3)
将defined()
评估为0
或1
,然后从该值if
决定是否应该进入身体。就像普通的if
语句。
答案 1 :(得分:1)
因此,基本上,前两行将为1或0,但是它们会做什么?只是一个人坐1还是0?
不,#if
将保留,仅defined()
将变为0
或1
。
因此,假设已定义了_WIN32
和_CRT_SECURE_NO_WARNINGS
,则显示的第一行第一行如下所示:
#if 1
#if 0
这两个if语句控制是否考虑以下内容,直到 next #endif
语句为止。
以上代码段虽然不完整,但应如下所示:
#if 1
#if 0
#define FOO 42
#endif
#endif
以上内容不会#define
FOO
。
以下内容也不会#define
FOO
:
#if 0
#if 1
#define FOO 42
#endif
#endif
以下将定义FOO
:
#if 1
#if 1
#define FOO 42
#endif
#endif
返回您的示例代码:
由外部if语句“控制”的东西
#if defined(_WIN32)
是
#if !defined(_CRT_SECURE_NO_WARNINGS)
#define _CRT_SECURE_NO_WARNINGS
由内部if语句“控制”的东西
#if !defined(_CRT_SECURE_NO_WARNINGS)
是
#define _CRT_SECURE_NO_WARNINGS
答案 2 :(得分:1)
因此,基本上,前两行将为1或0,但是它们会做什么?只是一个人坐1还是0?
# Check if the proxy is set
npm config get proxy
不会将行替换为#if expression
的结果,但是预处理程序将决定{p>中的expression
的值
expressen
是否将处理#if expression
controlled text
#endif /* expression */
。