使用#define字符串打印f和警告

Printf and warning with #define string

本文关键字:警告 打印 #define 字符串 使用      更新时间:2023-10-16

我正在使用Qt创建者,它会生成以下错误:

"警告:格式"%s"需要类型为"char*"的参数,

但参数2的类型为"const void*"[-Wformat]"

控制台应用程序正在工作,但我感兴趣的是,如果有办法避免这个错误,只是感兴趣的

#include <iostream> 
#include <stdio.h>
using namespace std;
bool isOpen(FILE *file);
void print(const void *text);
#define FILE_IS_OPEN "The file is now open"
int main()
{
    FILE *f;
    f = fopen("This.txt", "w");
    if(isOpen(f))
    print(FILE_IS_OPEN);
fclose(f);
return 0;
}
bool isOpen(FILE *file) { return file != NULL ? true : false; }
void print(const void *text) { printf("%sn", text); }

只需更改

void print(const void *text);

void print(const char *text);

这同样适用于函数定义。

格式说明符%s表示您正试图将字符串输出到控制台,因此它要求您在此处提供字符串的地址,该地址只不过是char *,您可以将其强制转换为(char *)text并将其传递给printf

此外,您不能输出指向任何基元数据类型的void *指针的内容。