@@ -1294,7 +1294,7 @@ impl<'a> Generator<'a> {
12941294 t ! ( writeln!(
12951295 self . rust,
12961296 r#"
1297- extern {{
1297+ extern "C" {{
12981298 #[allow(non_snake_case)]
12991299 fn __test_offset_{ty}_{field}() -> u64;
13001300 #[allow(non_snake_case)]
@@ -1347,7 +1347,7 @@ impl<'a> Generator<'a> {
13471347 t ! ( writeln!(
13481348 self . rust,
13491349 r#"
1350- extern {{
1350+ extern "C" {{
13511351 #[allow(non_snake_case)]
13521352 fn __test_field_type_{ty}_{field}(a: *mut {ty})
13531353 -> *mut u8;
@@ -1402,7 +1402,7 @@ impl<'a> Generator<'a> {
14021402 #[allow(non_snake_case)]
14031403 #[inline(never)]
14041404 fn size_align_{ty}() {{
1405- extern {{
1405+ extern "C" {{
14061406 #[allow(non_snake_case)]
14071407 fn __test_size_{ty}() -> u64;
14081408 #[allow(non_snake_case)]
@@ -1467,7 +1467,7 @@ impl<'a> Generator<'a> {
14671467 #[inline(never)]
14681468 #[allow(non_snake_case)]
14691469 fn sign_{ty}() {{
1470- extern {{
1470+ extern "C" {{
14711471 #[allow(non_snake_case)]
14721472 fn __test_signed_{ty}() -> u32;
14731473 }}
@@ -1533,7 +1533,7 @@ impl<'a> Generator<'a> {
15331533 #[inline(never)]
15341534 #[allow(non_snake_case)]
15351535 fn const_{name}() {{
1536- extern {{
1536+ extern "C" {{
15371537 #[allow(non_snake_case)]
15381538 fn __test_const_{name}() -> *const *const u8;
15391539 }}
@@ -1554,7 +1554,7 @@ impl<'a> Generator<'a> {
15541554 r#"
15551555 #[allow(non_snake_case)]
15561556 fn const_{name}() {{
1557- extern {{
1557+ extern "C" {{
15581558 #[allow(non_snake_case)]
15591559 fn __test_const_{name}() -> *const {ty};
15601560 }}
@@ -1661,7 +1661,7 @@ impl<'a> Generator<'a> {
16611661 #[allow(non_snake_case)]
16621662 #[inline(never)]
16631663 fn fn_{name}() {{
1664- extern {{
1664+ extern "C" {{
16651665 #[allow(non_snake_case)]
16661666 fn __test_fn_{name}() -> *mut u32;
16671667 }}
@@ -1701,7 +1701,7 @@ impl<'a> Generator<'a> {
17011701
17021702 let c_name = c_name. unwrap_or_else ( || name. to_string ( ) ) ;
17031703
1704- if rust_ty. contains ( "extern fn" ) {
1704+ if rust_ty. contains ( "extern fn" ) || rust_ty . contains ( "extern \" C \" fn" ) {
17051705 let sig = c_ty. replacen ( "(*)" , & format ! ( "(* __test_static_{}(void))" , name) , 1 ) ;
17061706 t ! ( writeln!(
17071707 self . c,
@@ -1719,7 +1719,7 @@ impl<'a> Generator<'a> {
17191719 #[inline(never)]
17201720 #[allow(non_snake_case)]
17211721 fn static_{name}() {{
1722- extern {{
1722+ extern "C" {{
17231723 #[allow(non_snake_case)]
17241724 fn __test_static_{name}() -> {ty};
17251725 }}
@@ -1764,7 +1764,7 @@ impl<'a> Generator<'a> {
17641764 #[inline(never)]
17651765 #[allow(non_snake_case)]
17661766 fn static_{name}() {{
1767- extern {{
1767+ extern "C" {{
17681768 #[allow(non_snake_case)]
17691769 fn __test_static_{name}() -> *{mutbl} {ty};
17701770 }}
@@ -1809,7 +1809,7 @@ impl<'a> Generator<'a> {
18091809 #[allow(non_snake_case)]
18101810 #[inline(never)]
18111811 fn static_{name}() {{
1812- extern {{
1812+ extern "C" {{
18131813 #[allow(non_snake_case)]
18141814 fn __test_static_{name}() -> *{mutbl} {ty};
18151815 }}
@@ -1991,7 +1991,7 @@ impl<'a> Generator<'a> {
19911991 use libc::c_int;
19921992 type U = {ty};
19931993 #[allow(improper_ctypes)]
1994- extern {{
1994+ extern "C" {{
19951995 #[allow(non_snake_case)]
19961996 fn __test_roundtrip_{ty}(
19971997 size: i32, x: U, e: *mut c_int, pad: *const u8
@@ -2106,7 +2106,7 @@ impl<'a> Generator<'a> {
21062106 ast:: FunctionRetTy :: Default ( ..) => "()" . to_string ( ) ,
21072107 ast:: FunctionRetTy :: Ty ( ref t) => self . ty2name ( t, rust) ,
21082108 } ;
2109- format ! ( "extern fn({}) -> {}" , args, ret)
2109+ format ! ( "extern \" C \" fn({}) -> {}" , args, ret)
21102110 } else {
21112111 assert ! ( t. lifetimes. is_empty( ) ) ;
21122112 let ( ret, mut args, variadic) = self . decl2rust ( & t. decl ) ;
0 commit comments