警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“long int”[-Wformat=]

2024-01-02

这段代码是关于.

比赛条件: 调度和编译器行为在进程或线程同步中起着重要作用。演示同步需求的最简单场景来自尝试修改共享变量值的两个线程/进程之间创建的竞争条件,这通常会导致数据不一致和错误结果。下面的例子演示了这种情况:

我是 C 语言新手,对这个警告发生的情况感到困惑。该警告是什么意思以及我该如何解决它。我写的代码在这里:

q1.c: In function ‘runner’:
q1.c:13:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
 printf("T tid: %d x before: %d\n", syscall(SYS_gettid),x); int i;
 ^
q1.c:19:1: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘long int’ [-Wformat=]
 printf("T tid: %d x after: %d\n", syscall(SYS_gettid),x);

这是代码:

// Race condition
#include <pthread.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/syscall.h>
int x=0;
void * runner(void *arg)
{
printf("T tid: %d   x before: %d\n", syscall(SYS_gettid),x); int i;
for (i = 0; i < 100000; i++ )
{
x = x + 1;
}
printf("T tid: %d   x after: %d\n", syscall(SYS_gettid),x);
}

int program()
{
pthread_t t1,t2,t3,t4;
printf("Parent pid: %d  x before threads: %d\n", getpid(),x); int i;
if(pthread_create(&t1,NULL, runner, NULL)){ printf("Error creating thread 1\n"); return 1;
}
if(pthread_create(&t2,NULL, runner, NULL)){ printf("Error creating thread 2\n"); return 1;
}
if(pthread_create(&t3,NULL, runner, NULL)){ printf("Error creating thread 1\n"); return 1;
}
if(pthread_create(&t4,NULL, runner, NULL)){ printf("Error creating thread 1\n"); return 1;
}

if(pthread_join(t1,NULL)){ printf("error joining thread 1"); return 1;
}
if(pthread_join(t2,NULL)){ printf("error joining thread 1"); return 1;
}
if(pthread_join(t3,NULL)){ printf("error joining thread 1"); return 1;
}

if(pthread_join(t4,NULL)){ printf("error joining thread 1"); return 1;
}
printf("Parent pid: %d  x after threads: %d\n", getpid(),x); return 0;
}

int main(int argc, char *argv[]) { 
int count=0;
// loop runs the program count times 
while(count<5)
{
// running program program();
count++;
//reset global x for next run of program. x=0;
printf("\n\n");
}
return 0;
}

你必须改变"%d" with "%ld", "%d"是为了签名int这里是l代表long so "%ld"是为了签名long int.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“long int”[-Wformat=] 的相关文章

随机推荐

  • slf4j 石英异常

    我正在尝试在项目的一个简单示例中使用石英 我收到以下异常 我不确定这意味着什么 但是我在 POM 文件中将 slf4j 更新为 1 6 1 即使这样仍然出现 SLF4J slf4j api 1 6 x or later is incompa
  • 如何捕获(并忽略)对错误函数的调用?

    我很惊讶我在任何地方都找不到这个问题的答案 我正在编写一个 Roguelike 游戏 并且正在使用 hackage 的 ncurses 库 它是 ncurses 库的一个非常好的包装器 现在 ncurses 有一个怪癖 如果你尝试写右下角的
  • 用于简单传递性检查的不必要的谓词定义?

    对于给定的事实 trust direct p1 p2 trust direct p1 p3 trust direct p2 p4 trust direct p2 p5 trust direct p5 p6 trust direct p6 p
  • 如何禁用 Mailchimp 双重选择加入 PHP

    我对 Mailshimp 完全陌生 我在网上找不到任何可以禁用双重选择的内容 我不使用任何 Mailchimp API 我只是将 mailchimp 提供的表单放入我的 html 中 有什么想法可以不使用 API 或者如果必须使用 API
  • 我可以使用 EL 从 JSP 访问枚举类的值吗?

    我有一个枚举类USState 我想遍历 JSP 中的状态 是否可以访问列表USState不首先将这样的列表设置为属性 似乎像枚举这样的静态东西应该始终可用 但我不知道如何做到这一点 这就是我正在寻找的 工作除外
  • 读取内存中的整个文件 VS 读取块

    我对 C 和编程还比较陌生 所以请耐心等待 我正在开发一个应用程序 需要读取一些文件并按块处理这些文件 例如 以 48 字节的块处理数据 我想知道什么是更好的 性能方面 在内存中一次读取整个文件然后处理它 或者以块的形式读取文件并直接处理它
  • 实体框架 - 联合导致“无法创建类型的常量值..”

    选择全部Schedulings 是活跃的 我有以下代码 var allSchedulesOnALine CurrentUser Lines SelectMany o gt o Scheduling Where o gt o Active v
  • 根据平均值对 R 数据框中的列重新排序

    我想根据每列的算术平均值对数据框的列重新排序 For S1 S2 S3 1 1 1 2 1 1 3 3 1 预期输出是 S3 S2 S1 1 1 1 1 1 2 1 3 3 在上述情况下 平均值为 S1 2 S2 1 6666 and S3
  • Java DecimalFormat 科学记数法问题

    我正在使用Java的十进制格式 https stackoverflow com questions 168802 where can i find a tutorial to get started learning jquery类以科学记
  • 使用动态规划查找三项式系数

    我正在尝试使用动态编程在Java中实现一个计算三项式系数的函数 我正在使用以下公式 T n k 1 if n 0 and k 0 T n k 0 if k lt n or k gt n T n k T n 1 k 1 T n 1 k T n
  • 是否可以在虾文件中渲染斑点图像?

    我愿意使用Gruff https github com topfunky gruff在虾文件中渲染一些图形 我想避免将图像写入磁盘的延迟 仅让 Prawn 读取它们 格鲁夫提供to blob方法 http www rubydoc info
  • 如何在 PySimple GUI 中根据按钮点击显示不同的布局? (持续窗口循环)

    我想知道是否有一种方法可以根据 PySimple GUI 中的按钮单击来管理不同的布局 我刚刚开始使用这个框架 我想找到导航菜单的最佳方式 不一定要使用不同的布局 但这让我想到了最直观的方法 我在想 当选择某个子菜单按钮时 可能会有一个布局
  • 如何计算质心

    我正在处理地理空间形状并在这里查看质心算法 http en wikipedia org wiki Centroid Centroid of polygon http en wikipedia org wiki Centroid Centro
  • 在 C++ 中格式化整数

    我有一个 8 位整数 我想按如下格式打印 XXX XX XXX 我想使用一个接受 int 并返回字符串的函数 有什么好的方法可以做到这一点 就我个人而言 我就是这样做的 可能不是解决问题的最快方法 也绝对不像egrunin 的函数那样可重用
  • scss模块(css module):从其他scss文件导入

    我目前正在转换我的 sass 样式以使用CSS 模块 https github com css modules css modules以避免风格冲突 我的理解是 它会生成唯一的类名 这使得如果我想定位在不同文件中定义的另一个组件 例如子组件
  • Chrome 无法连接到 websocket 服务器(操作码 -1)“握手已取消”

    我有一个使用自签名证书的安全 websocket 服务器 我无法从 chrome v44 0 2403 107 客户端连接到该服务器 它是我的测试服务器 它使用与我的应用程序服务器几乎相同的代码创建 我的应用程序服务器can连接到 我试过重
  • Android 8.1.0 中移动屏幕关闭时 BLE 扫描停止

    我将此权限放入清单文件中
  • Delphi XE3 及更高版本在退出时不保存打开的 IDE 选项卡

    我正在运行 win 7 64Bit Delphi XE3 当我在旧的 Delphi XE 中打开一个项目时 它会打开我上次保存该项目时打开的所有表单 如何让XE3有同样的动作 显然是一个简单的问题 但我找不到XE3中保存布局的设置 你必须将
  • .NET API 的 PayPal 异常:流不可读

    正在尝试处理付款 但我的客户遇到了例外情况 当我逐步执行付款流程时 当我尝试使用 OAuthTokenCredential 方法获取访问令牌时 我看到此异常 HttpConnection 执行中出现异常 流不可读 这在几天前才起作用 我确实
  • 警告:格式“%d”需要“int”类型的参数,但参数 2 的类型为“long int”[-Wformat=]

    这段代码是关于 比赛条件 调度和编译器行为在进程或线程同步中起着重要作用 演示同步需求的最简单场景来自尝试修改共享变量值的两个线程 进程之间创建的竞争条件 这通常会导致数据不一致和错误结果 下面的例子演示了这种情况 我是 C 语言新手 对这