-2

我正在使用 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("%s\n", text); }
4

2 回答 2

2

简单地改变

void print(const void *text);

void print(const char *text);

这同样适用于函数定义。

于 2013-08-06T16:06:31.043 回答
0

格式说明符%s表示您正在尝试将字符串输出到控制台,因此它要求您提供字符串的地址,但char *在这里,您可以将其转换为(char *)text并将其传递给printf.

此外,您不能将void *指针的内容输出到任何原始数据类型。

于 2013-08-06T16:07:09.930 回答