Компилятор Visual Studio 2010 C ++ - получение текущего номера строки при компиляции - PullRequest
0 голосов
/ 27 января 2010

У меня есть вопрос о том, как получить текущий номер строки при компиляции компилятора VS C ++, IF , конечно, это возможно. Я знаю, что можно использовать макрос LINE из препроцессора, но результаты, которые я получаю, не верны (по крайней мере, не то, что я хочу).

Пожалуйста, скажите мне, что это возможно:)

Заранее спасибо

редактирование: Я думаю, что нашел ошибку с использованием макроса __LINE__. Теперь я чувствую себя немного глупо ... Думаю, мне нужно идти спать (через некоторое время вы не создаете / не добавляете ничего нового, а разрушаете то, что вы сделали до сих пор). Проблема решена, спасибо всем за помощь!

1 Ответ

3 голосов
/ 27 января 2010

Хорошо ... чтобы объяснить немного лучше, так как я думаю, что вы неправильно поняли значение макроса __LINE__ ...

Рассмотрим три исходных файла:

/* Source1.c */
...list of headers & functions ....
if (!(fp = fopen("foo.blah", "r"))){
   fprintf(stderr, "Error in %s @ line: %d: Could not open foo.blah\n", __FILE__, __LINE__);
}

/* Source2.c */
...list of headers & functions ....
if (!(p = (char *)malloc((10 * sizeof(char)) + 1)))){
   fprintf(stderr, "Error in %s @ line: %d: Could not malloc\n", __FILE__, __LINE__);
}

/* Source3.c */
...list of headers & functions ....
if (!(ptr = (char *)malloc((50 * sizeof(char)) + 1)))){
   fprintf(stderr, "Error in %s @ line: %d: Could not malloc\n", __FILE__, __LINE__);
}

Предположим, что эти три файла скомпилированы и связаны в исполняемый файл с именем foo.exe, и появляются ошибки времени выполнения, не обращая внимания, вы получите:

Error in source2.c @ line 25: Could not malloc
Error in source1.c @ line 50: Could not open foo.blah
Error in source3.c @ line 33: Could not malloc

Общий размер источников проекта с точки зрения количества строк, не означает , что означает, что эти строки не синхронизированы, независимо от того, что было предварительно обработано. Надеюсь, я объяснил вам, что вам легче понять это, помогая обосновать использование макроса __LINE__.

Надеюсь, это поможет, С наилучшими пожеланиями, Том.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...