[英]I'm using Linux, compiling with gcc, getting error: warning: implicit declaration of function ‘fopen_s’, can someone help me fix this?
[英]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 的警告:
我怎樣才能擺脫這個警告?
您正在使用
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.