C/C++/C# 新手。有什么方法可以__LINE__
用来返回通过 stdio.h 读取的输入文件的当前行号(例如,getchar())?如果没有,还有其他更好的方法吗?
问问题
146 次
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 回答