mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
doc: add a section documenting #preinclude
(#17304)
This commit is contained in:
parent
d0a873ca02
commit
4691c5d637
32
doc/docs.md
32
doc/docs.md
@ -196,6 +196,7 @@ by using any of the following commands in a terminal:
|
|||||||
* [C Declarations](#c-declarations)
|
* [C Declarations](#c-declarations)
|
||||||
* [Export to shared library](#export-to-shared-library)
|
* [Export to shared library](#export-to-shared-library)
|
||||||
* [Translating C to V](#translating-c-to-v)
|
* [Translating C to V](#translating-c-to-v)
|
||||||
|
* [Working around C issues](#working-around-c-issues)
|
||||||
* [Other V Features](#other-v-features)
|
* [Other V Features](#other-v-features)
|
||||||
* [Inline assembly](#inline-assembly)
|
* [Inline assembly](#inline-assembly)
|
||||||
* [Hot code reloading](#hot-code-reloading)
|
* [Hot code reloading](#hot-code-reloading)
|
||||||
@ -6424,6 +6425,37 @@ Translating it to V gives you several advantages:
|
|||||||
- Cross-compilation becomes a lot easier. You don't have to worry about it at all.
|
- Cross-compilation becomes a lot easier. You don't have to worry about it at all.
|
||||||
- No more build flags and include files either.
|
- No more build flags and include files either.
|
||||||
|
|
||||||
|
### Working around C issues
|
||||||
|
|
||||||
|
In some cases, C interop can be extremely difficult.
|
||||||
|
One of these such cases is when headers conflict with each other.
|
||||||
|
For example, V needs to include the Windows header libraries in order for your V binaries to work
|
||||||
|
seamlessly across all platforms.
|
||||||
|
|
||||||
|
However, since the Windows header libraries use extremely generic names such as `Rectangle`,
|
||||||
|
this will cause a conflict if you wish to use C code that also has a name defined as `Rectangle`.
|
||||||
|
|
||||||
|
For very specific cases like this, we have `#preinclude`.
|
||||||
|
|
||||||
|
This will allow things to be configured before V adds in its built in libraries.
|
||||||
|
|
||||||
|
Example usage:
|
||||||
|
```v ignore
|
||||||
|
// This will include before built in libraries are used.
|
||||||
|
#preinclude "pre_include.h"
|
||||||
|
// This will include after built in libraries are used.
|
||||||
|
#include "include.h"
|
||||||
|
```
|
||||||
|
|
||||||
|
An example of what might be included in `pre_include.h`
|
||||||
|
can be [found here](https://github.com/irishgreencitrus/raylib.v/blob/main/include/pre.h)
|
||||||
|
|
||||||
|
This is an advanced feature, and will not be necessary
|
||||||
|
outside of very specific cases with C interop,
|
||||||
|
meaning it could cause more issues than it solves.
|
||||||
|
|
||||||
|
Consider it last resort!
|
||||||
|
|
||||||
## Other V Features
|
## Other V Features
|
||||||
|
|
||||||
### Inline assembly
|
### Inline assembly
|
||||||
|
Loading…
Reference in New Issue
Block a user