invalid conversion from ‘int’ to ‘cups_job_t*’ {aka ‘cups_job_s*’} [-fpermissive]
时间: 2024-03-03 08:53:23 浏览: 48
如果你在编译代码时遇到了类似"invalid conversion from ‘int’ to ‘cups_job_t*’ {aka ‘cups_job_s*’} [-fpermissive]"的错误,这是因为cupsGetJobs函数的第三个参数需要传递一个指向int类型的指针,用于返回获取到的打印任务数量。在示例代码中,我们将job_id直接传递给了该参数,导致编译错误。
以下是修改后的示例代码:
```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;
}
```
在上述示例代码中,我们新增了一个int类型的变量num_jobs,并将其地址传递给cupsGetJobs函数的第五个参数。该参数用于返回获取到的打印任务数量。在获取到打印任务信息后,我们使用cupsFreeJobs函数释放内存。
阅读全文