Objective-C xcode:C / C ++中__FILE__和__LINE__的等价物?

时间:2010-05-03 18:51:43

标签: objective-c xcode ipad

同样的问题:Do __LINE__ __FILE__ equivalents exist in C#?

但对于iPad / iPhone SDK Xcode中的Objective-C?这确实有助于我的NSLog语句随着时间的推移更具可读性。

6 个答案:

答案 0 :(得分:10)

因此在视觉上更容易。仅显示没有路径的文件名。观察终端没有文字包装很方便。

<强>书写:

NSLog(@"Log: %s %d", (strrchr(__FILE__, '/') ?: __FILE__ - 1) + 1, __LINE__);

输出为:

Log: file.m 340

答案 1 :(得分:8)

不是特定答案(因为已经发布了这些答案),但可以在此处找到标准预定义宏的列表:http://developer.apple.com/mac/library/documentation/DeveloperTools/gcc-4.0.1/cpp/Standard-Predefined-Macros.html#Standard-Predefined-Macros

列出__LINE____FILE____DATE____FUNCTION__等内容。

答案 2 :(得分:7)

是的,他们这样做:

 NSLog(@"%s:%d", __FILE__, __LINE__);

输出例如:

  

/Path/to/file.m:42

答案 3 :(得分:3)

您也可以使用@__FILE__

答案 4 :(得分:1)

我必须回过头来看看Objective C文档,但我的猜测是“肯定”,因为它们是C编程语言的核心,而Objective C是它的扩展

答案 5 :(得分:0)

请注意,您不能将 FILE 返回的字符串常量隐式转换为char *。

这会引发编译器警告。 “不推荐使用从字符串常量转换为'char *'”。

以上内容应为:

NSLog(@"%s:%d", (char *) __FILE__, __LINE__);