invalid conversion from ‘int’ to ‘cups_job_t*’ {aka ‘cups_job_s*’} [-fpermissive]
时间: 2024-03-03 22:53:23 浏览: 129
VCCString-int-string-char.txt.rar_conversion_vc string
如果你在编译代码时遇到了类似"invalid conversion from ‘int’ to ‘cups_job_t*’ {aka ‘cups_job_s*’} [-fpermissive]"的错误,这是因为cupsGetJobs函数的返回类型是cups_job_t*,而不是int。在示例代码中,我们将cupsGetJobs函数的返回值直接赋值给了cups_job_t*类型的变量,导致编译错误。
以下是修改后的示例代码:
```c
#include <cups/cups.h>
#include <stdio.h>
int main(int argc, char *argv[]) {
int job_id = 1234; // 假设要获取的打印任务的job_id为1234
cups_job_t *job;
int num_jobs = 0;
int num_copies = -1;
if ((job = cupsGetJobs(NULL, NULL, job_id, 1, &num_jobs)) != NULL) {
num_copies = cupsGetInteger(job->attrs, "job-impressions-completed", -1);
cupsFreeJobs(num_jobs, job);
} else {
printf("Error: Unable to get job.\n");
}
printf("Number of copies: %d\n", num_copies);
return 0;
}
```
在上述示例代码中,我们修改了声明cups_job_t类型的变量job的方式,使用指针来声明,然后将cupsGetJobs函数的返回值赋值给该指针变量。同时,我们新增了一个int类型的变量num_jobs,并将其地址传递给cupsGetJobs函数的第五个参数。该参数用于返回获取到的打印任务数量。在获取到打印任务信息后,我们使用cupsFreeJobs函数释放内存。
阅读全文