перейти к источнику с пользовательскими сообщениями во время компиляции? - PullRequest
4 голосов
/ 06 января 2011

В Visual Studio я могу включить следующие макросы в исходный код, и во время сборки сообщение будет распечатано. Затем я могу дважды щелкнуть сообщение в окне сообщения сборки и перейти к строке источника.

#define _QUOTE(x) # x
#define QUOTE(x) _QUOTE(x)
#define __FILE__LINE__ __FILE__ "(" QUOTE(__LINE__) ") : "
#pragma message ( __FILE__LINE__ "Notify user of something in code" )

Можно ли сделать то же самое в Builder C ++?

Думаю, что нет, поскольку в окне сообщений о сборке в Builder C ++, по-видимому, содержится больше информации, позволяющей работать с опцией «Просмотр исходного кода» или командой двойного щелчка.

C ++ Builder XE.

Я включил тег Delphi в этот вопрос, так как многие пользователи Delphi также используют Builder C ++.

Ответы [ 2 ]

3 голосов
/ 12 января 2011

Эквивалентом в C ++ Builder является директива #warning. Линия:

#warning Test warning message here

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

A warning message in the Messages pane

Это действует как любое другое сообщение компилятора, и двойной щелчок приводит вас к строке кода.

Макросы __FILE__ и __LINE__ не раскрываются в сообщении, которое вы определяете с помощью #warning - оно берет текст и выплевывает его точно так, как написано. Тем не менее, вам не нужно их использовать, так как отправляемое сообщение в любом случае содержит номер файла и строки.

Если вы хотите записать сообщение об ошибке (поскольку Delphi позволяет вам - $MESSAGE имеет уровень, из памяти, подсказки, предупреждения или ошибки), вы можете использовать #error. Он работает так же, как #warning и останавливает компиляцию в этой строке, как и любая другая ошибка компиляции, поэтому

#error This is an error message

дает

An error message in the Messages pane

Я использую C ++ Builder 2010 , но я в меру уверен, что эти директивы работали для многих версий.

(Кстати, пометить вопрос C ++ Builder 'delphi' обычно нормально, так как многие вопросы об IDE или VCL будут одинаково отвечать в обоих сообществах. Я делаю это постоянно. вопросы, так как люди с Delphi вряд ли знают о конкретных директивах компилятора C ++ Builder. Пометка «c ++ - builder» сама по себе подойдет.)

0 голосов
/ 06 января 2011

В Delphi вы можете включить директиву сообщения.Например:

{$MESSAGE WARN 'To be or not to be'}

, который выводит предупреждение в сообщениях о сборке.Это сообщение о компиляции так же кликабельно, как любая другая ошибка / предупреждение / подсказка компилятора, и при щелчке по нему вы попадете в расположение директивы {$ MESSAGE ...} в источнике.

Я не знаю какЯ не использую C ++ Builder, но я предполагаю, что C ++ Builder поддерживает аналогичную технику ...

...