Как я показываю значение #define во время компиляции?

Вы не определяете то, что на самом деле делает кнопка. Это - строка из моего приложения:

self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCancel target:self action:@selector(cancelEdit:)];

cancelEdit:, селектор, находится в текущем классе (сам) и определяется как:

- (void) cancelEdit: (id) sender;
110
задан Brian Tompsett - 汤莱恩 13 February 2016 в 21:40
поделиться

8 ответов

Если вы используете Visual C ++, вы можете использовать #pragma message :

#include <boost/preprocessor/stringize.hpp>
#pragma message("BOOST_VERSION=" BOOST_PP_STRINGIZE(BOOST_VERSION))

Редактировать: Спасибо LB за ссылку

По-видимому, GCC эквивалент (не протестирован):

#pragma message "BOOST_VERSION=" BOOST_PP_STRINGIZE(BOOST_VERSION)
58
ответ дан 24 November 2019 в 03:09
поделиться

Насколько я знаю ' #error 'будет печатать только строки, на самом деле вам даже не нужно использовать кавычки .

Вы пробовали писать различные целенаправленно неправильные коды с помощью «BOOST_VERSION»? Возможно, что-то вроде "blah [BOOST_VERSION] = foo;" сообщит вам что-то вроде «строковый литерал 1.2.1 не может использоваться как адрес массива». Это не будет красивое сообщение об ошибке, но, по крайней мере, он покажет вам соответствующее значение. Вы можете поиграть, пока не найдете ошибку компиляции, которая сообщает вам значение.

13
ответ дан 24 November 2019 в 03:09
поделиться

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

3
ответ дан 24 November 2019 в 03:09
поделиться

Вы ищете

#if BOOST_VERSION != "1.2"
#error "Bad version"
#endif

Не замечательно, если BOOST_VERSION является строкой, как я предполагал, но также могут быть отдельные целые числа, определенные для основного, вспомогательного номера и номера версии.

2
ответ дан 24 November 2019 в 03:09
поделиться

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

1
ответ дан 24 November 2019 в 03:09
поделиться

Просмотр вывода препроцессора - это наиболее близкий к ответу, который вы запрашиваете.

Я знаю, что вы исключили этот (и другие способы), но я не уверен Почему. У вас есть достаточно конкретная проблема, которую нужно решить, но вы не объяснили, почему ни один из «обычных» методов вам не подходит.

2
ответ дан 24 November 2019 в 03:09
поделиться

BOOST_VERSION определяется в файле заголовка повышения version.hpp.

1
ответ дан 24 November 2019 в 03:09
поделиться
Другие вопросы по тегам:

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