我为揭示设置lldb命令别名。
命令如下:
command alias reveal_load_sim expr (void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
command alias reveal_load_dev expr (void*)dlopen([(NSString*)[(NSBundle*)[NSBundle mainBundle] pathForResource:@"libReveal" ofType:@"dylib"] cStringUsingEncoding:0x4], 0x2);
command alias reveal_start expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStart" object:nil];
command alias reveal_stop expr (void)[(NSNotificationCenter*)[NSNotificationCenter defaultCenter] postNotificationName:@"IBARevealRequestStop" object:nil];
但是当我设置一个断点并在reveal_load_sim
中添加调试器命令application:didFinishLaunchingWithOptions
时,我收到了这个错误:
错误:: 1:8:错误:一行上的连续语句必须用';'
分隔(void*)dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2) ^ ;
我google了很多,找不到解决方案。
答案 0 :(得分:1)
错误消息中的;
表示(void*)
被视为一个语句而行的其余部分被视为第二个语句。因此,通常错误消息是1/2对。只需删除(void*)
,这只是C声明的一部分。
夫特: dlopen(" /Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib",0x2)
由于在原始问题中没有指定语言,因此假设Objective-C出现了错误。
目标-C:
您有声明和函数调用的组合。你需要的是:
dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
或
void *handle = dlopen("/Applications/Reveal.app/Contents/SharedSupport/iOS-Libraries/libReveal.dylib", 0x2);
取决于您是否需要返回的句柄,可能不是。
答案 1 :(得分:0)
你发布的代码是一个奇怪的弗兰肯斯坦的混合语法怪物。它看起来主要是Objective-C和一些混合使用的Swift语法来混淆事物。它不合法。不是长篇大论。
您的方括号都不属于第3行,第4行和第5行。
您的(classname*)
类型转换在Swift中都不正确。 (Swift使用语法type(objectToCast)
进行类型转换。)