www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 23812] New: ImportC: allow adding function attributes to

https://issues.dlang.org/show_bug.cgi?id=23812

          Issue ID: 23812
           Summary: ImportC: allow adding function attributes to imported
                    C functions
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Keywords: ImportC
          Severity: enhancement
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dkorpel live.nl

C functions imported with ImportC currently don't get any function attributes,
so they're currently not callable in `nothrow` ` nogc` `pure` ` safe` contexts.

nothrow and  nogc could be given by default, the only exceptions would be if
the imported function has a callback, or if it is actually implemented in D but
imported through a C file for some reason.

 safe is rarer for C functions since they often receive raw pointers, so we
might just require use of ` trusted` when calling them from a ` safe` context.

pure is also rarer for C, since C libraries often use global variables / stderr
for error reporting, but ImportC could recognize the `__attribute__((pure))`
extension some compilers have.

In any case, new syntax could be created along the lines of:
```C
#pragma nogc nothrow

#include <somelibrary.h>
```

--
Mar 28 2023