Что такое оператор «#» в C? - PullRequest
       46

Что такое оператор «#» в C?

2 голосов
/ 31 октября 2011

Есть ли оператор '#' в C?

Если да, то в коде

enum {ALPS, ANDES, HIMALYAS};

что бы вернулось следующее?

 #ALPS 

Ответы [ 5 ]

17 голосов
/ 31 октября 2011

Язык C не имеет оператора #, но препроцессор (программа, которая обрабатывает #include и #define), имеет. Простой препроцессор превращает #ALPS в строку "ALPS".

Однако этот оператор «stringify» может использоваться только в директиве препроцессора #define. Например:

#define MAKE_STRING_OF_IDENTIFIER(x)  #x
char alps[] = MAKE_STRING_OF_IDENTIFIER(ALPS);

Препроцессор преобразует приведенный выше пример в следующее:

char alps[] = "ALPS";
4 голосов
/ 31 октября 2011

В C. нет оператора #. Префикс # используется для обозначения инструкций препроцессора.

См .: http://en.wikipedia.org/wiki/C_preprocessor

1 голос
/ 31 октября 2011

Острый символ в C является префиксом для директив препроцессора.

Это не оператор ...

1 голос
/ 31 октября 2011

Нет. # используется для директив препроцессора, таких как #include и #define. Он также может использоваться внутри определений макросов для предотвращения расширения макросов.

0 голосов
/ 28 декабря 2012

"#" не является оператором в C. Но препроцессор (который работает до компилятора) предоставляет возможность _ включение заголовочных файлов: enter code here # включает _ расширения макроса: **#define foo(x) bar x** _ условная компиляция:

**#if DLEVEL > 5
    #define STACK   200
#else
   #define STACK   50
    #endif
#endif**

В enum {ALPS, ANDES, HIMALYAS}; Ничто не вернет ALPS. Вы только что определили тип сильного целого числа (ALPS = 0, ANDES = 1 and HIMALYAS = 2), но это перечисления без названия для этого перечисления, например: гора enum {ALPS, ANDES, HIMALYAS};

...