【问题标题】:Are there any equivalent of C/C++ __FILE__ and __LINE__ macros in R?R 中是否有任何等效的 C/C++ __FILE__ 和 __LINE__ 宏?
【发布时间】:2013-01-15 22:51:05
【问题描述】:

我正在尝试在 R(或 S+)中获取 C 或 C++ 中的 FILELINE 宏。有什么想法吗?

FILE 当前源文件的假定名称(字符串文字)。

LINE 当前源代码行的假定行号(在当前源文件中)(一个整数常量)。

至于上下文 - 我将日志消息从代码的不同部分刷新到控制台,并且鉴于消息本身是在运行时构建的,因此通常很难找出该日志消息的来源(随着 R 代码的大小增长到数千行并在分布式网格上运行)。但是,如果我可以将 FILE 和 LINE 编号连同日志消息一起转储,那么跟踪日志会容易得多...

【问题讨论】:

  • 在询问语言 Y 中 X 的等价物时,通常最好提供一些背景信息,说明为什么需要这样的工具以及使用它的目的。这有助于了解 R 但不懂 C/C++ 的人集思广益可能的解决方案。
  • 我编辑了您的问题以添加 FILE 和 LINE 描述。但正如评论中所说,我们需要问题的上下文,即使对于了解这两种语言的人来说也是如此。这里的上下文并不明显。
  • 如果你能记录下函数的名字,也许你可以用getAnywhere找到它..
  • 如果您完全熟悉 C/C++ 中的 __FILE____LINE__,那么 OP 在 R 中需要它们的用途并不重要......这是隐含的,因为它们需要访问他们代码的文件和/或行号......这怎么不清楚?

标签: r s-plus


【解决方案1】:

使用#line 指令。结构是#line nn "filename"。请参阅邓肯的默多克article on source references 了解更多信息。

【讨论】:

  • #line nn "filename" 其中 nn 是一个整数。与 C 语言中的同名指令一样,这告诉解析器假设源代码的下一行是给定文件名的第 nn 行,以便构造源代码引用。
  • 这正是我想要的!它需要在这里和那里放置指令以及行号,这些行号很快就会随着代码/文件的移动而丢失......我想知道这里是否可能没有解决方案......:-/
猜你喜欢
  • 2013-10-21
  • 2011-05-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
  • 2010-10-10
相关资源
最近更新 更多