使用pthread_cleanup_push/pop和-O2 CFLAGS编译一段代码时,我有一些警告。只需删除 Makefile 中的 O2 cflags 就可以毫无问题地编译。
是否禁止对这些 pthread 宏使用 gcc 优化?我无法在 man 或文档中找到任何内容。顺便说一句,有没有其他方法可以在线程末尾清理东西?它也与 gcc arm 完美配合。但不是在 x86 gcc 上。
警告 :
x/x.c:1292:2: warning: variable ‘__cancel_routine’ might be clobbered by ‘longjmp’ or ‘vfork’ [-Wclobbered]
pthread_cleanup_push(x_cleanup, &fd);
我当前的 CFLAGS 选项:
-W -Wall -Wformat -Wformat-security -Wextra -Wno-unused-result,
-Wextra -Wno-long-long -Wno-variadic-macros -Wno-missing-field-initializers
-std=gnu99 -O2