美文网首页V语言
V语言学习笔记-25条件编译

V语言学习笔记-25条件编译

作者: lydiandy | 来源:发表于2020-05-20 00:28 被阅读0次

条件编译

目前主要针对不同平台,实现条件编译

按照作者的说法,为了保持V的简单,不会加入预处理,但是支持条件编译

目前的条件编译有2种主要方式:

1.根据源文件名后缀来实现条件编译

2.根据代码中的$if来实现条件编译

源文件后缀名方式

源文件后缀包含了2个维度的条件编译:

  • 通用源文件

    后缀名 编译条件
    只有 .v 所有操作系统,所有后端都参与编译
  • 操作系统(os)

    后缀名 编译条件
    _nix linux,unix,mac,solaris下才会参与编译,或者说是非windows
    _darwin mac下才会参与编译
    _linux linux下才会参与编译
    _solaris solaris下才会参与编译
    _windows windows下才会参与编译
    _bare 编译成裸机(metal)环境运行代码,才会参与编译,不进行排列组合
  • 编译器后端(backend)

    后缀名 编译器后端
    .c C语言为编译器后端时才会参与编译
    .js js语言为编译器后端时才会参与编译
    .x64 直接生成x64机器码时才会参与编译

    以上2个维度排列组合:

    file.v
    file_linux.c.v
    file_windows.c.v
    file_windows.js.v
    ...
    

源代码中的$if方式

$if windows {
    println('windows')
    $if msvc { //可以在windows平台中,进一步判断是msvc还是mingw
        
    }
    $if mingw { //可以在windows平台中,进一步判断是msvc还是mingw
        
    }
}
$if linux {
    println('linux')
}
$if macos {
    println('mac')
}

$if windows {
    
} $else { //用来处理$if以外,其他平台的代码
    
}
$if !windows { //还可以使用!,取否
    
}

判断是否使用了-debug

$if debug {
    println('from debug')
}
//执行:
//v run main.v -debug

判断平台是32位还是64位

fn main() {
    mut x := 0
    $if x32 {
        println('system is 32 bit')
        x = 1
    }
    $if x64 {
        println('system is 64 bit')
        x = 2
    }
}

判断平台使用的字节序是小字节序,还是大字节序

fn main() {
    mut x := 0
    $if little_endian { //小字节序
        println('system is little endian')
        x = 1
    }
    $if big_endian { //大字节序
        println('system is big endian')
        x = 2
    }
}

跨平台交叉编译

编译器有一个选项-os用来编译生成指定平台的可执行文件

目前可以是:linux, mac, windows, msvc

v -os linux ./main.v

相关文章

  • V语言学习笔记-25条件编译

    条件编译 目前主要针对不同平台,实现条件编译 按照作者的说法,为了保持V的简单,不会加入预处理,但是支持条件编译 ...

  • V语言学习笔记-总览

    最新版本学习笔记:github电子书 利用闲暇时间,体验了V语言,边看边动手记录,所以有了这个V语言学习笔记 写在...

  • 【C语言学习】条件编译

    一般情况下,在进行编译时对源程序的每一行都要编译。但是有时希望程序中某一部分的内容只在满足一定条件时才进行编译,也...

  • 22_条件编译使用分析

    关键词:条件编译的本质、#include的本质、 条件编译的意义 0 基本概念: 1) 条件编译的行为类似于C语言...

  • c语言

    准备 目标:快速学习c语言编程工具:腾讯在线编译器 Cloud Studio 官网条件:具备其他编程语言的基础 ...

  • Vue学习笔记之列表渲染

    上一篇:Vue学习笔记之条件渲染 v-for 在 v-for 块中,我们拥有对父作用域属性的完全访问权限。v-fo...

  • Golang聚合

    教程 Go Web 编程Go语言圣经(中文版) Tips Golang 学习笔记——交叉编译 & 部署Golang...

  • uniapp基本语法—v-if/v-show

    1、条件编译:v-if和v-show isShow为变量 区别: v-if的false隐藏,默认是把所在的view...

  • iOS 开发 条件编译相关的预编译指令

    本文主要介绍C语言中条件编译相关的预编译指令,包括 #define、#undef、#ifdef、#ifndef、...

  • js中v8引擎的详解

    v8引擎出现的原因 这里先说一下什么是编译型语言和解释性语言: 编译型语言: 在程序执行之前必须进行专门的编译过程...

网友评论

    本文标题:V语言学习笔记-25条件编译

    本文链接:https://www.haomeiwen.com/subject/hdwbohtx.html