2015-04-09 3 views
0

Я новичок в программировании, и у меня есть программа, которая работает, но мне нужно отобразить номера строк для нее. Могу ли я использовать макрос C __LINE__? Если да, то где я могу вставить его в код, а если не то, что я мог сделать, чтобы программа распечатывала номера строк вместе с кодом? Заранее спасибо.Как распечатать номера строк?

ответ

2

В __LINE__ макрос в ряде интеграл линии (предполагаемый номер строки в исходном файле), так что вы можете очень хорошо использовать его в любом месте целое число может использоваться:

printf ("This line is %d.\n", __LINE__); 

От C11 6.10.8.1 Mandatory macros:

__LINE__ Предполагаемый номер строки (в текущем исходном файле) текущей строки источника (целочисленная константа).


Если, как это может быть в случае на основе ваших комментариев, вам нужно просто иметь программу, которая выводит себя с номерами строк, я хотел бы предложить не используя __LINE__ для этого.

Вместо этого было бы лучше, если бы программа сохранила запись о том, на какой строке она находится, и выводит ее перед самой линией. См., Например:

#include <stdio.h> 

int main (void) { 
    static char buff[100000]; 
    int lineNum = 0; 
    FILE *fp = fopen (__FILE__, "r"); 
    if (fp != NULL) { 
     while (fgets (buff, sizeof (buff), fp) != NULL) { 
      printf ("%7d: %s", ++lineNum, buff); 
     } 
     fclose (fp); 
    } 
    return 0; 
} 
+0

Извините, если это звучит глупо, но мне нужно будет вставить его один раз в код или прямо перед каждой строкой? – mishi

+0

@mishi, вам нужно будет вставить его везде, где вы хотели напечатать номер строки. Выполнение этого перед каждой строкой кода будет честной работой, поэтому вам может потребоваться отступить и рассказать нам о реальной проблеме, которую вы пытаетесь решить. Скорее всего, есть лучший способ. – paxdiablo

+0

Я сделал программу, которая читает свой собственный исходный файл, и теперь мне нужно открыть другой текстовый файл с тем же исходным файлом, но включить номера строк в текстовый файл – mishi

Смежные вопросы