diff options
author | Dan Robertson <dan@dlrobertson.com> | 2019-02-24 22:40:49 +0000 |
---|---|---|
committer | Dan Robertson <dan@dlrobertson.com> | 2019-02-27 10:21:45 -0500 |
commit | 1a6e9e24083c3250f76ca1ad6a0142d9ab3223d0 (patch) | |
tree | 345654909f088210547352af7c67e2da97cf2cad | |
parent | 210c6071b02db76900d55e00bd46ee91285c3a07 (diff) | |
download | rust-1a6e9e24083c3250f76ca1ad6a0142d9ab3223d0.tar.gz |
Add c_variadic to the unstable-book
- Add the c_variadic language feature
- Add the c_variadic library feature
-rw-r--r-- | src/doc/unstable-book/src/language-features/c-variadic.md | 24 | ||||
-rw-r--r-- | src/doc/unstable-book/src/library-features/c-variadic.md | 26 |
2 files changed, 50 insertions, 0 deletions
diff --git a/src/doc/unstable-book/src/language-features/c-variadic.md b/src/doc/unstable-book/src/language-features/c-variadic.md new file mode 100644 index 00000000000..9e7968d906f --- /dev/null +++ b/src/doc/unstable-book/src/language-features/c-variadic.md @@ -0,0 +1,24 @@ +# `c_variadic` + +The tracking issue for this feature is: [#44930] + +[#44930]: https://github.com/rust-lang/rust/issues/44930 + +------------------------ + +The `c_variadic` language feature enables C-variadic functions to be +defined in Rust. The may be called both from within Rust and via FFI. + +## Examples + +```rust +#![feature(c_variadic)] + +pub unsafe extern "C" fn add(n: usize, mut args: ...) -> usize { + let mut sum = 0; + for _ in 0..n { + sum += args.arg::<usize>(); + } + sum +} +``` diff --git a/src/doc/unstable-book/src/library-features/c-variadic.md b/src/doc/unstable-book/src/library-features/c-variadic.md new file mode 100644 index 00000000000..77762116e6b --- /dev/null +++ b/src/doc/unstable-book/src/library-features/c-variadic.md @@ -0,0 +1,26 @@ +# `c_variadic` + +The tracking issue for this feature is: [#44930] + +[#44930]: https://github.com/rust-lang/rust/issues/44930 + +------------------------ + +The `c_variadic` library feature exposes the `VaList` structure, +Rust's analogue of C's `va_list` type. + +## Examples + +```rust +#![feature(c_variadic)] + +use std::ffi::VaList; + +pub unsafe extern "C" fn vadd(n: usize, mut args: VaList) -> usize { + let mut sum = 0; + for _ in 0..n { + sum += args.arg::<usize>(); + } + sum +} +``` |