▲ | illuminator83 3 days ago | |
Oh, they were not talking about the implementation of these things. Just the the user side: printf("Error: File `%s` in batch %d failed.", file.c_str(), batch) vs fmt::print("Error: File `{}` in batch {} failed.", file, batch) One of which is objectively safer and more portable than the other. They didn't care. "I like what I've been doing for the last 20 years already better because it looks better.". "No Its not because I'm just used to it." "If you are careful it is just as safe. But you gotta know what you are doing." And best of all - classic elitism: "If you are not smart enough to do it right with printf, maybe you shouldn't be a C++ programmer. Go write C# or something instead." The same person was not smart enough to do it right in many places as I've proven with a static analyzer. | ||
▲ | Cloudef 3 days ago | parent [-] | |
Yeah, its frightingly common CI not doing static analysis checks on C/C++ code. The compiler defaults being really bad doesn't help either. The nice thing about zig is that it defaults to "safe" behaviour, and even if you use it as C/C++ compiler it has saner defaults and compiles with ubsan. You can guide compiler to check printf style format strings using __attribute__((format)) btw, also checks you are not using a variable as a format string |