CLANG按值传递警告?

时间:2009-12-16 16:14:02

标签: 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);

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

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

有谁能告诉我我错过了什么?

加里

2 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

这表示您尚未初始化MDD_fCount。有关其他信息,请参阅this blog postthis other question