December 24, 2006 Re: Deprecate C style declerations? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Daniel Keep | Daniel Keep wrote: > Hasan Aljudy wrote: >> >> >> Don Clugston wrote: >>> >>> I'd also add: >>> * some alternative to #line that doesn't waste the '#' symbol on such a rarely-used feature. >>> >> >> I've always wondered if there's even anyone out there using this so called "feature"? >> Why would you want to alter the lexer's internal state of the current line number? >> Who even came up with the idea? >> >>> And there are probably a few more I've forgotten about. > > I use it! > > I'm currently working on a project that my supervisor wanted written in literate style. So I ported CWEB over to D, and it relies heavily on the use of #line. Basically, where code appears in the source document, and where it appears in the generated code often have little correlation, and without #line debugging would be next to impossible. > > Remember, just because you don't use a feature and think it's ugly, doesn't mean no one does. > > Let me put it this way: if #line is removed, I have to go back to C since I doubt my supervisor will let me use a language for which I'm stuck using an old compiler for. Hell, *I* wouldn't want to do that. It's not about #line, just about the use of '#' for that single syntax situation. (Even the suggested ##line would probably be acceptable). > (As for C-style declarations, it means you can copy+paste a whole bunch of C declarations into D source. Yes they can be converted, but this is as simple as it gets. If it's no extra work for Walter, why remove it?) Really, you can't just copy and paste. You need to change typedef to alias, you need to change enums, etc. It is just supporting a bad habit. Reasons to remove it: * Makes code harder to read -- it is currently possible to mix C-style and D style declarations in a single block of code. That's disgusting. * Complicates the compiler, and means that any D parsing tool also has to parse C declarations. * Probably restricts future language options, because of ambiguities that it introduces. > -- Daniel "you'll pry #line from my cold, dead hands" |
December 29, 2006 Re: Deprecate C style declerations? | ||||
---|---|---|---|---|
| ||||
Posted in reply to Don Clugston | Don Clugston wrote: > Daniel Keep wrote: > >> (As for C-style declarations, it means you can copy+paste a whole bunch of C declarations into D source. Yes they can be converted, but this is as simple as it gets. If it's no extra work for Walter, why remove it?) > > Really, you can't just copy and paste. You need to change typedef to > alias, you need to change enums, etc. > It is just supporting a bad habit. > Reasons to remove it: > * Makes code harder to read -- it is currently possible to mix C-style > and D style declarations in a single block of code. That's disgusting. > * Complicates the compiler, and means that any D parsing tool also has > to parse C declarations. > * Probably restricts future language options, because of ambiguities > that it introduces. > Yes, I believe this has been discussed before, although at greater lengths. I can't remember that there has been any particularly convincing arguments in the past, and the only reason I can think of, is for C source conversion easiness. I think it is a bad reason. -- Lars Ivar Igesund blog at http://larsivi.net DSource & #D: larsivi |
Copyright © 1999-2021 by the D Language Foundation