February 07, 2012 Re: Should C functions automatically be nothrow? | ||||
|---|---|---|---|---|
| ||||
The classic example of when a c function can throw is via callbacks. For example, passing a D function to the c runtime qsort. If that function throws, calling qsort with it can throw. While libc doesn't have a lot of that sort of function, the realm of C code in general is bigger.
That argues for appropriately labeling them since the entire set can't be just assumed to be nothrow. Some of the core.* files have already been hit, I believe.
Later,
Brad
On Mon, 6 Feb 2012, Jonathan M Davis wrote:
> Can C functions throw? I don't know of any way that a C function could throw. Is it possible if you have a C function which calls a D function or something like that? I don't know. I wouldn't really expect the C function to be able to handle the D exception, in which case, it wouldn't end up throwing the exception to whatever code calls it.
>
> Assuming that C functions can't throw, is there any reason _not_ to have the compiler automatically treat C functions as nothrow?
>
> If we can't treat C funtions in general as nothrow (for whatever reason that may be), is there a reason why we can't explicitly mark the various C bindings in druntime as nothrow at the very least?
>
> - Jonathan M Davis
>
| ||||
Copyright © 1999-2021 by the D Language Foundation
Permalink
Reply