- cross-posted to:
- programmer_humor@programming.dev
- cross-posted to:
- programmer_humor@programming.dev
Strictly speaking, it should be
Unsafe block syntax in C++
{ ...}That is why I use just
int main()without arguments instead.Any
void main()enjoyers?besides not requiring a return value, what difference does it make?
@stebo02 @Bogus5553 Neither of them require a return value, but
void mainisn’t legal C++.yeah I thought so, does it work in C?
void main()is not in the standard, but works on both MSVC and GCC (with warnings). I think it works on both C/C++, but you really shouldn’t use it in production. Just useint main(void), without any return value, which is permitted in the standard, and will return success iirc.
It will also give an error if you try to add a return value anyways.
while (true)int main(void) { . . . }for me!
Very true, the less user input you have the safer your code will be.
Safe code is a skill, not a feature.
i will never forgive C for making the type syntax be
char* args[]instead of the much more reasonable
&[char] argsit also bothers me that
char* args[]andchar care “the same type” in the sense that the compiler lets you writechar c, *args[5];with no problems. i think the C languages would be way easier to learn if they had better type syntax. don’t even get me started on C++ adding support for
auto fn_name() -> ReturnType { … }@affiliate Hey, you didn’t even mention that
char *args[]actually meanschar **argsin a parameter list.god, what a beautiful language. it brings a tear to my eye
I personally think that C++ can be beautiful. For example:
std::filesystem::pathoverrides the/operator, for specifying parent paths. It’s the same as Kotlin’s OKIO and Pythons standard pathlib.
It could, but not necessarily.
char **argscan just mean you have a pointer which points to an address, and at that address, you can get a second address. Follow the second address, there is acharsaved there.On the other hand,
char *args[]means " follow this address to find a list of characters".@racketlauncher831 As far as the C compiler is concerned, there is literally no difference between those two notations. If you declare a function parameter as an array (of T), the C compiler automatically strips the size information (if any) and changes the type to pointer (to T).
(And if we’re talking humans, then
char *args[]does not mean “follow this address to find a list of characters” because that’s the syntax for “array of pointers”, not “pointer to array”.)
counterpoint: all code is unsafe. retvrn to abacuses
But I was hit over the head with one, that wasn’t safe either!





