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 use int main(void){...} , without any return value, which is permitted in the standard, and will return success iirc.
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[] and char c are “the same type” in the sense that the compiler lets you write
char 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
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.
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 a char 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”.)
You are not logged in. However you can subscribe from another Fediverse account, for example Lemmy or Mastodon. To do this, paste the following into the search field of your instance: !programmerhumor@lemmy.ml
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
Posts must be relevant to programming, programmers, or computer science.
No NSFW content.
Jokes must be in good taste. No hate speech, bigotry, etc.
Safe code is a skill, not a feature.
Strictly speaking, it should be
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.
counterpoint: all code is unsafe. retvrn to abacuses
But I was hit over the head with one, that wasn’t safe either!
i will never forgive C for making the type syntax be
instead of the much more reasonable
it also bothers me that
char* args[]
andchar c
are “the same type” in the sense that the compiler lets you writewith 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
@affiliate Hey, you didn’t even mention that
char *args[]
actually meanschar **args
in 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::path
overrides the/
operator, for specifying parent paths. It’s the same as Kotlin’s OKIO and Pythons standard pathlib.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”.)