一行中的连续陈述必须用';'分隔。

时间:2015-06-23 00:11:00

标签: swift

我为揭示设置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了很多,找不到解决方案。

2 个答案:

答案 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)进行类型转换。)