簡體   English   中英

擺脫編譯器警告“警告:未使用調用結果”

[英]Get rid of compiler warning “warning: result of call is not used”

我正在處理一些包含以下功能的舊代碼。 總之,該函數從文本文件中讀取一行,去除前導/后綴空格和換行符,檢查錯誤,並在成功時返回字符串中的字符數,在錯誤時返回-1。 您能給我一些擺脫警告的提示嗎? 我知道這不是錯誤,但是我想改進代碼。 謝謝!

static int readline(file *mf, char *buf, int n, int strip) {
    if (!buf || n < 1 || !mf) return seterror(MDIO_BADPARAMS);

    // Read the line
    fgets(buf, n, mf->f);

    // End of file reached?
    if (feof(mf->f)) return seterror(MDIO_EOF);

    // File I/O error?
    if (ferror(mf->f)) return seterror(MDIO_IOERROR);

        // comment line?
        if (buf[0] == '#') return readline(mf,buf,n,strip);

    // Strip whitespace
    if (strip) strip_white(buf);

    return strlen(buf);
}

該函數可以編譯(nvcc),但具有警告:

警告:未使用通話結果

fgets使用warn_unused_result屬性聲明。 不檢查結果通常是編程錯誤:如果fgets無法讀取任何內容,它將返回NULL並保持緩沖區不變。 如果不檢查這種情況,則可能會處理過時或未初始化的數據。

要解決此問題,只需檢查結果:

if(!fgets(buf, n, mf->f)) return seterror(MDIO_EOF);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM