On 11.08.2019 19:17, Christos Zoulas wrote: > Did you use -Wold-style-cast? We've come full circle now, and what we have seems > to be more complicated than what we had before and I am not sure what was the > problem in the first place... Can we just step back and understand what is the problem > we are trying to solve with all this complexity? > > christos > It's all clean for -Wold-style-cast. $ cat test.cpp #include <sys/types.h> #include <sys/event.h> #include <cinttypes> #include <cstdio> int main(int argc, char **argv) { struct kevent kv; EV_SET(&kv, 0, 0, 0, 0, 0, 0); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, NULL); printf("%" PRIxPTR "\n", kv.udata); #if __cplusplus >= 201103L EV_SET(&kv, 0, 0, 0, 0, 0, nullptr); printf("%" PRIxPTR "\n", kv.udata); #endif EV_SET(&kv, 0, 0, 0, 0, 0, 0L); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 0LL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 0U); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 0UL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 0ULL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<intptr_t>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<uintptr_t>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 'a'); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 3.5); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, "aa"); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<short>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<char>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 1); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, NULL); printf("%" PRIxPTR "\n", kv.udata); #if __cplusplus >= 201103L EV_SET(&kv, 0, 0, 0, 0, 0, nullptr); printf("%" PRIxPTR "\n", kv.udata); #endif EV_SET(&kv, 0, 0, 0, 0, 0, 1L); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 1LL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 1U); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 1UL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 1ULL); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<intptr_t>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<uintptr_t>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 'a'); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, 3.5); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, "aa"); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<short>(0)); printf("%" PRIxPTR "\n", kv.udata); EV_SET(&kv, 0, 0, 0, 0, 0, static_cast<char>(0)); printf("%" PRIxPTR "\n", kv.udata); return 0; } $ clang++ -std=c++11 -Wall -Wold-style-cast -Weverything -pedantic test.cpp test.cpp:20:35: warning: 'nullptr' is incompatible with C++98 [-Wc++98-compat] EV_SET(&kv, 0, 0, 0, 0, 0, nullptr); ^ test.cpp:25:35: warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic] EV_SET(&kv, 0, 0, 0, 0, 0, 0LL); ^ test.cpp:31:35: warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic] EV_SET(&kv, 0, 0, 0, 0, 0, 0ULL); ^ test.cpp:53:35: warning: 'nullptr' is incompatible with C++98 [-Wc++98-compat] EV_SET(&kv, 0, 0, 0, 0, 0, nullptr); ^ test.cpp:58:35: warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic] EV_SET(&kv, 0, 0, 0, 0, 0, 1LL); ^ test.cpp:64:35: warning: 'long long' is incompatible with C++98 [-Wc++98-compat-pedantic] EV_SET(&kv, 0, 0, 0, 0, 0, 1ULL); ^ test.cpp:8:10: warning: unused parameter 'argc' [-Wunused-parameter] main(int argc, char **argv) ^ test.cpp:8:23: warning: unused parameter 'argv' [-Wunused-parameter] main(int argc, char **argv) ^ 8 warnings generated. $ g++ -std=c++11 -Wall -Wold-style-cast -pedantic test.cpp $
Attachment:
signature.asc
Description: OpenPGP digital signature