ImportC openssl/ssl.h issues due to inttypes.h

Witold Baryluk witold.baryluk at gmail.com
Fri Feb 20 00:51:29 UTC 2026


With a bit more hacks, there is some progress,

```
$ echo 'import ssl; int main() { return 0; }' > foo2.d
```


```
$ gdc foo2.d
ssl.i:1200:20: error: type-specifier missing for declaration of 
‘nullptr_t’
  1200 |   typedef __typeof__(nullptr) nullptr_t;
       |                    ^
```

```
$ gcc -E -P -D__restrict="" -D__inline="" -D__extension__="" 
'-D__asm__(x)= ' '-D__typeof__(x)=void*' 
/usr/include/openssl/ssl.h > ssl.i
/usr/include/openssl/ssl.h:21:9: warning: ‘#pragma once’ in main 
file [-Wpragma-once-outside-header]
    21 | #pragma once
       |         ^~~~
```

However better way is doing this for this `nullptr` and 
`nullptr_t` stuff, and `__inline` (this second part might be 
accidental somehow) - just preprocess with older C standard:

`-std=c11`

so

```
$ gcc -E -P -D__restrict="" -D__extension__="" '-D__asm__(x)= ' 
-std=c11 /usr/include/openssl/ssl.h > ssl.i
/usr/include/openssl/ssl.h:21:9: warning: ‘#pragma once’ in main 
file [-Wpragma-once-outside-header]
    21 | #pragma once
       |
```




```
$ gdc foo2.d
ssl.i:875:63: warning: conflicting types for built-in function 
‘vfprintf’; expected ‘extern (C) int(void*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   875 |        __gnuc_va_list __arg) __attribute__ ((__nonnull__ 
(1)));
       |                                                           
     ^
ssl.i:876:65: warning: conflicting types for built-in function 
‘vprintf’; expected ‘extern (C) int(const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   876 | extern int vprintf (const char * __format, __gnuc_va_list 
__arg);
       |                                                           
       ^
ssl.i:878:59: warning: conflicting types for built-in function 
‘vsprintf’; expected ‘extern (C) int(char*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   878 |        __gnuc_va_list __arg) __attribute__ 
((__nothrow__));
       |                                                           
^
ssl.i:884:83: warning: conflicting types for built-in function 
‘vsnprintf’; expected ‘extern (C) int(char*, ulong, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   884 |      __attribute__ ((__nothrow__)) __attribute__ 
((__format__ (__printf__, 3, 0)));
       |                                                           
                         ^
ssl.i:909:86: warning: conflicting types for built-in function 
‘vfscanf’; expected ‘extern (C) int(void*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   909 |      __attribute__ ((__format__ (__scanf__, 2, 0))) 
__attribute__ ((__nonnull__ (1)));
       |                                                           
                            ^
ssl.i:911:53: warning: conflicting types for built-in function 
‘vscanf’; expected ‘extern (C) int(const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   911 |      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
       |                                                     ^
ssl.i:914:93: warning: conflicting types for built-in function 
‘vsscanf’; expected ‘extern (C) int(const(char)*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   914 |      __attribute__ ((__nothrow__ , __leaf__)) 
__attribute__ ((__format__ (__scanf__, 2, 0)));
       |                                                           
                                   ^
ssl.i:916:86: warning: conflicting types for built-in function 
‘vfscanf’; expected ‘extern (C) int(void*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   916 |      __attribute__ ((__format__ (__scanf__, 2, 0))) 
__attribute__ ((__nonnull__ (1)));
       |                                                           
                            ^
ssl.i:918:53: warning: conflicting types for built-in function 
‘vscanf’; expected ‘extern (C) int(const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   918 |      __attribute__ ((__format__ (__scanf__, 1, 0))) ;
       |                                                     ^
ssl.i:920:52: warning: conflicting types for built-in function 
‘vsscanf’; expected ‘extern (C) int(const(char)*, const(char)*, 
__va_list_tag[1])’ [-Wbuiltin-declaration-mismatch]
   920 |      __attribute__ ((__format__ (__scanf__, 2, 0)));
       |                                                    ^
```

So it appears to work.


More information about the D.gnu mailing list