- cross-posted to:
- [email protected]
- cross-posted to:
- [email protected]
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] args
it also bothers me that
char* args[]
andchar c
are “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 **args
in a parameter list.It could, but not necessarily.
char **args
can 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 achar
saved 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”.)
god, what a beautiful language. it brings a tear to my eye
I personally think that C++ can be beautiful. For example:
std::filesystem::path
overrides the/
operator, for specifying parent paths. It’s the same as Kotlin’s OKIO and Pythons standard pathlib.
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 main
isn’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.
int main(void) { . . . }
for me!while (true) {...}
Very true, the less user input you have the safer your code will be.