Хорошо ... чтобы объяснить немного лучше, так как я думаю, что вы неправильно поняли значение макроса __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__
.
Надеюсь, это поможет,
С наилучшими пожеланиями,
Том.