2017-01-31 6 views
2

Есть ли способ получить номер строки исходного кода в коде C во время выполнения? Мысль о том, что программное обеспечение сделано на простом языке C. файл .exe распространяется на пользователя, который ничего не знает о C. Теперь, если есть какая-либо ошибка, пользователь может видеть номер строки и сообщать об ошибке производителю, чтобы отладка выполнялась на сайте производителя. Я просто отлаживаю ошибки времени выполнения и получаю соответствующие номера строк в исходном коде во время его запуска. Я новичок в этих материалах.Есть ли способ получить номер строки исходного кода в коде C во время выполнения?

+0

Не достаточно ли компилировать с помощью отладочных символов и запускать код в отладчике, таком как gdb? –

+0

Это дубликат, который отвечает на ваш конкретный вопрос. Но, как указано в первом комментарии, лучшим способом отладки является использование отладчика. – kaylum

+0

Я прошу номера строк во время выполнения. Не могли бы вы объяснить? Я новичок в кодировании –

ответ

2

Используйте gdb вместо этого. Но я думаю, это сработает:

if(someThingsWrong()) 
    printf("wrong at line number %d in file %s\n", __LINE__, __FILE__); 
3

Если вы используете компилятор GCC, вы можете использовать стандартный предопределенный макрос - __LINE__ в качестве номера строки.

Компилятор заполнит номер строки при компиляции.

Например: -

printf("%d",__LINE__);

+1

Макрос '__LINE__' не относится к GCC. –

2

Вы можете использовать встроенные макросы __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; 
} 
+1

'__FILE__' и' __LINE__', наряду с некоторыми другими, фактически являются обязательными макросами. См. C11 §6.10.8.1 1. –