#ifndef _WINDOWS
if(condition)
{
printf("to do in linux");
}
else
#endif
{
printf("should work in both linux and windows...");
}
我的问题:这个代码在linux和windows中都有效吗?
答案 0 :(得分:4)
你有比你需要更多的逻辑 - 你可以这样做:
#ifndef _WINDOWS
printf("to do in Linux");
// ...
#endif
printf("to do in both Linux and Windows");
// ...
答案 1 :(得分:2)
由于#ifdef
,#ifndef
和#endif
是预处理程序的指令,因此将在编译开始之前应用这些指令,在定义_WINDOWS
的情况下完全忽略以下行:< / p>
#ifndef _WINDOWS
if(condition)
{
printf("to do in linux");
}
else
#endif
请注意,condition
仅在不在Windows上时才会被评估。
在Windows上,除了以下嵌套的匿名范围之外别无其他:
{
printf("should work in both linux and windows...");
}
答案 2 :(得分:1)
实际上,ELSE语句不能在Linux上运行,因为编译后的源代码是:
if(true)
{
printf("to do in linux");
}
else
{
printf("should work in both linux and windows and i have multiple statements in this else bolck");
}
请注意,在C中我们不是true
而是非零值,所以if(1)
例如(或者您需要正确定义true
关键字,或者只是` #include像@JonathanLeffler建议的那样。)
但你可以在你的代码中使用不同的定义来尝试它。
答案 3 :(得分:0)
它不适用于WINDOWS
使用此:
#ifndef _WINDOWS
printf("to do in linux");
//...
#else
printf("should work in both linux and windows and i have multiple statements in this else bolck");
//...Other blocks of code
#endif