int main(void) {
to:
pub fn main() !void {
Except making it looks like a "new" language and requires other people spends 15min to get to used to it?
int main(void) {
to:
pub fn main() !void {
Except making it looks like a "new" language and requires other people spends 15min to get to used to it?
Use of the pub keyword means you can tell whether a function is public in the module without needing to look at a separate place for listing exports (like, say, a header file). Though that itself has tradeoffs, so it's hard to say whether one or the other is better.
Use of the fn keyword makes it easy to find function definitions by grepping for it, whereas finding functions in regular C syntax needs semantic awareness.
What I don't understand is the !void at the end of the declaration, if we're meant to be returning an int, surely !int would be the expected syntax (although I would prefer returns int instead).
`!void` means the function can return an error (e.g. return error.BadArgument) but doesn't produce any value itself. In the case of an error in the main function, the process will exit with 1, otherwise 0. The main function can also return a value directly (return type u8 / !u8).
for (string, 0..) |character, index| {
_ = character;
_ = index;
}
does it matter though, in 2024 and beyond?
we've got clangd and lsp, grepping for functions is dumb, whether you're grepping C or grepping Zig.