Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
D (programming language)
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
===Better C=== The D programming language has an official subset known as "{{nowrap|Better C}}".<ref name=":0">{{Cite web|url=https://dlang.org/spec/betterc.html|title=Better C}}</ref> This subset forbids access to D features requiring use of runtime libraries other than that of C. Enabled via the compiler flags "-betterC" on DMD and LDC, and "-fno-druntime" on GDC, {{nowrap|Better C}} may only call into D code compiled under the same flag (and linked code other than D) but code compiled without the {{nowrap|Better C}} option may call into code compiled with it: this will, however, lead to slightly different behaviours due to differences in how C and D handle asserts. ====Features included in Better C==== * Unrestricted use of compile-time features (for example, D's dynamic allocation features can be used at compile time to pre-allocate D data) * Full metaprogramming facilities * Nested functions, nested structs, delegates and lambdas * Member functions, constructors, destructors, operating overloading, etc. * The full module system * Array slicing, and array bounds checking * RAII * '''{{not a typo|scope(exit)}}''' * Memory safety protections * Interfacing with C++ * COM classes and C++ classes * '''assert''' failures are directed to the C runtime library * '''switch''' with strings * '''final switch''' * '''unittest''' blocks * '''printf''' format validation ====Features excluded from Better C==== * Garbage collection * TypeInfo and ModuleInfo * Built-in threading (e.g. <code>core.thread</code>) * Dynamic arrays (though slices of static arrays work) and associative arrays * Exceptions * ''synchronized'' and <code>core.sync</code> * Static module constructors or destructors
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)