Есть ли способ получить номер строки исходного кода в коде C во время выполнения? Мысль о том, что программное обеспечение сделано на простом языке C. файл .exe распространяется на пользователя, который ничего не знает о C. Теперь, если есть какая-либо ошибка, пользователь может видеть номер строки и сообщать об ошибке производителю, чтобы отладка выполнялась на сайте производителя. Я просто отлаживаю ошибки времени выполнения и получаю соответствующие номера строк в исходном коде во время его запуска. Я новичок в этих материалах.Есть ли способ получить номер строки исходного кода в коде C во время выполнения?
ответ
Используйте gdb вместо этого. Но я думаю, это сработает:
if(someThingsWrong())
printf("wrong at line number %d in file %s\n", __LINE__, __FILE__);
Если вы используете компилятор GCC, вы можете использовать стандартный предопределенный макрос - __LINE__
в качестве номера строки.
Компилятор заполнит номер строки при компиляции.
Например: -
printf("%d",__LINE__);
Макрос '__LINE__' не относится к GCC. –
Вы можете использовать встроенные макросы __LINE__
и __FILE__
, которые всегда расширяют на имя текущего файла и номер строки.
#include <stdio.h>
int main(int argc, char *argv[])
{
if(argc<2)
{
printf("Error: invalid arguments (%s:%d)\n", __FILE__, __LINE__);
return 0;
}
printf("You said: %s\n", argv[1]);
return 0;
}
'__FILE__' и' __LINE__', наряду с некоторыми другими, фактически являются обязательными макросами. См. C11 §6.10.8.1 1. –
Не достаточно ли компилировать с помощью отладочных символов и запускать код в отладчике, таком как gdb? –
Это дубликат, который отвечает на ваш конкретный вопрос. Но, как указано в первом комментарии, лучшим способом отладки является использование отладчика. – kaylum
Я прошу номера строк во время выполнения. Не могли бы вы объяснить? Я новичок в кодировании –