簡體   English   中英

為什么我會收到警告“隱式聲明 function 'fopen_s'”,我該如何擺脫它?

[英]Why do I get a warning “implicit declaration of function 'fopen_s'” and how can I get rid of it?

我想制作一個 C 程序,為我的實驗室 class 創建文件。

但是使用此代碼,我收到了fopen_s function 的警告。

#include <stdio.h>

int main(void)
{
    int i , j , seira , sum , temp;

    printf("Give the number of exercise series:\n");
    scanf("%d" , &seira);
    printf("Give me the number of total exercises\n");
    scanf("%d" , &sum);
    
    FILE *fp;
    char name[FILENAME_MAX];
    j = seira;
    temp = sum;

    if (j < 10)
    {
        for (i = 1; i <= temp; i++)
        {
            _snprintf(name , sizeof(name) , "Homework0%d_Group03_%d.c", j , i);
            fopen_s(&fp , name , "w");
            fclose(fp);
        }
    }
    else if (j >= 10)
    {
        for (i = 1; i <= temp; i++)
        {
            _snprintf(name , sizeof(name) , "Homework%d_Group03_%d.c", j , i);
            fopen_s(&fp , name , "w");
            fclose(fp);
        }
    }

    return 0;
}

這是我收到 gcc 的警告:

1

我怎樣才能擺脫這個警告?

您正在使用

fopen_s(&fp, name, "w");

根據https://en.cppreference.com/w/c/io/fopen , function 在stdio.h中聲明,您正在包括在內,但它僅從 C11 標准開始可用。

和,

僅當實現定義了__STDC_WANT_LIB_EXT1__並且用戶在包含stdio.h之前將__STDC_LIB_EXT1__定義為 integer 常量 1 時,才保證fopen_s可用。

因此,如果需要,您需要使用-std=c11啟用 C11(請參閱如何在 gcc 的更高版本上啟用 c11? ),並且您需要定義__STDC_WANT_LIB_EXT1__宏,如果您的編譯器支持 function - 如注釋中所述, ,似乎不太可能。 否則,您無法使用 function。

暫無
暫無

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

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