2013-10-07 6 views

ответ

2

С #ifdef, #ifndef и #endif являются директивы препроцессора, то они будут применяться до начала компиляции, не обращая внимания на следующие строки полностью регистр _WINDOWS:

#ifndef _WINDOWS 
if(condition) 
{ 
    printf("to do in linux"); 
} 
else 
#endif 

Обратите внимание, что condition будет оцениваться только в том случае, если он не находится в Windows.

В Windows, не будет ничего, кроме следующего вложенного анонимного объема:

{ 
    printf("should work in both linux and windows..."); 
} 
+0

спасибо .. и в случае с linux это будет, если (true) {printf («делать в linux»)} else {printf («должен работать как в Linux ... "); } это правильно? – zeal

+1

@zeal: Вы должны использовать только последний. В случае Linux оба оператора 'printf' будут выполнены. – LihO

+0

извините вопрос будет если (условие) ошибочно я написал if (true) – zeal

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"); 
} 

И имейте в виду, что вместо того, чтобы true в C мы имеем ненулевые значения, так if(1) например (или вам нужно указать правильное определение для ключевого слова true или просто `#include, как предлагает @JonathanLeffler).

Но вы могли бы определенно попробовать его с различными определениями в своем коде.

+0

Где вы прятались эти последние 14 лет или около того? В C99 введено '', которое определяет 'bool',' true' и 'false'. –

+0

@JonathanLeffler Хорошо, но что мы можем найти там? '#define true 1 \ n #define false 0'. 'true' и' false' - это НЕ ключевые слова, просто определяет. Все здесь: http://stackoverflow.com/a/4767943/882200 Итак, моя точка зрения действительна на 100%, и поскольку вопрос был довольно прост, ответ должен быть точным. Или мы могли бы использовать jQuery для этого и ничего не учиться;] –

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 
4

Вы имеете больше логики, чем вам нужно - вы можете просто сделать это:

#ifndef _WINDOWS 
    printf("to do in Linux"); 
    // ... 
#endif 
    printf("to do in both Linux and Windows"); 
    // ... 
Смежные вопросы