C Препроцессор - пробел в #define? [Дубликат]

8
задан Brian Tompsett - 汤莱恩 28 November 2015 в 12:32
поделиться

6 ответов

нет, вы не можете

#define identifier something

то, что вы определяете, должно быть идентификатором , который не может содержать пробел. Также он не может содержать дефис, начинаться с числа и т. Д., Вы можете определить только идентификатор

то, что вы написали, будет работать

#define replace to replacement here

, но не как вы ожидаете. Эта строка определила replace для замены на to replacement here

hth.

6
ответ дан Armen Tsirunyan 15 August 2018 в 23:02
поделиться

Нет, это невозможно. Почему бы просто не сделать это:

#define replace_to replacement here
1
ответ дан Axel 15 August 2018 в 23:02
поделиться
  • 1
    потому что "заменить на" не написано мной. – metdos 4 March 2011 в 13:36
  • 2
    Попробуйте выполнить это с вашим компилятором: & quot; #define replace \ to replacement here & quot ;. Если нет, лучше всего сделать это, возможно, ваш код предварительно обработан sed или что-то подобное до компиляции. – Axel 4 March 2011 в 13:43

Если вы выполняете единичный тест, вы можете скомпилировать свой файл со следующим флагом

-Dprivate=public

. Затем в вашем модульном тесте вы сможете вызывать все частные методы вашего класса.

EDIT:

Недавно я заметил, что использование флага -fno-access-control в gcc-компиляторе позволяет вам получить доступ к частному методу или члену. Более подробную информацию по этой теме можно найти здесь: Тестирование модуля с помощью -fno-access-control

3
ответ дан Community 15 August 2018 в 23:02
поделиться

Это похоже на то, что вы пытаетесь сделать, будет намного лучше обслуживаться глобальным поиском и заменой.

0
ответ дан Joris Timmermans 15 August 2018 в 23:02
поделиться

, вероятно, нет. Он поймет, что первое слово после определения - это имя идентификатора, а остальное - это «тело» этого.

0
ответ дан Marcus 15 August 2018 в 23:02
поделиться

Вы могли бы сделать ...

#define replace replacement
#define to here

Следите за непреднамеренными побочными эффектами определений. Вероятно, вы захотите #undef их после того, как они выполнили свою работу.

1
ответ дан Martin Stone 15 August 2018 в 23:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: