0

C/C++/C# 新手。有什么方法可以__LINE__用来返回通过 stdio.h 读取的输入文件的当前行号(例如,getchar())?如果没有,还有其他更好的方法吗?

4

2 回答 2

8

不,__LINE__与标准输入无关。它只是由编译器宏扩展(到源代码文件中的行号)。

如果您需要计算标准输入的行数,请使用getline(3)std::getline以及 C++ 中的朋友逐行阅读...

不要使用fgets或旧的和死的gets

于 2013-09-27T19:05:28.150 回答
1

__LINE__是一个特殊的 C/C++ 预处理器定义,它被转换为正在处理的源代码文件中当前行的源代码文件行号。它与实际 C/C++ 程序的任何类型的输入或输出无关。

__LINE__与另一个特殊的 C/C++ 预处理器定义一起,__FILE__通常在生成日志时使用,以提供源代码文件名(__FILE__定义为)和特定的行号(__LINE__定义为)。

所以可能有一个日志功能,它的界面看起来像log (char *pszMessage, char *pszFile, int iLineNo),你可以使用它像log ("My Log message", __FILE__, __LINE__);

这些是特殊的内置定义,其值由预处理器在打开和处理源文件时更改。

正如 Basile Starynkevitch 所提到的,如果您想计算行数,则需要使用 C/C++ 输入函数/对象之一来读取行数,并在读取行数时对其进行计数。

于 2013-09-27T19:24:36.663 回答