同样的问题:Do __LINE__ __FILE__ equivalents exist in C#?
但对于iPad / iPhone SDK Xcode中的Objective-C?这确实有助于我的NSLog语句随着时间的推移更具可读性。
答案 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__);