CLANG按值传递警告?

fuz*_*oat 0 objective-c

以下代码编译好......

int main (int argc, const char * argv[]) {
    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];

    // VARIABLES
    MDD *MDD_structure;
    NSString *mddFile = @"/Users/Gary/Code/Mdd/xTest.mdd";
    NSFileHandle *inFile;
    NSData *inBuffer;
    int MDD_fCount;
    int MDD_vCount;

    // OPEN FILE ON DISK
    inFile = [NSFileHandle fileHandleForReadingAtPath:mddFile];
    if(inFile == nil) NSLog(@"FILE: Open ... ERROR");
    else NSLog(@"FILE: Open ... OK");

    // READ FRAME COUNT
    inBuffer = [inFile readDataOfLength:sizeof(int)];
    [inBuffer getBytes:&MDD_fCount length:sizeof(int)];
    MDD_fCount = CFSwapInt32BigToHost(MDD_fCount);
    NSLog(@"FC: %d", MDD_fCount);
Run Code Online (Sandbox Code Playgroud)

但是当我通过静态分析器"CLANG LLVM 1.0"运行时,我得到以下内容......

warning: Pass-by-value argument in function call is undefined.
         MDD_fCount = CFSwapInt32BigToHost(MDD_fCount);
                      ^                    ~~~~~~~~~~
1 diagnostic generated.
Run Code Online (Sandbox Code Playgroud)

谁能告诉我我失踪了什么?

加里

Joh*_*eek 5

你得到一个错误,因为clang不相信简单地将你的变量的地址传递给一个函数就像给它一个值一样.你可能初始化MDD_fCount为0开始摆脱错误.