vala程序预处理指令

作者: 从火星来 | 来源:发表于2019-03-08 20:48 被阅读0次

百度了很久都找不到关于vala程序预处理指令的中文资料,于是我到官网找了英文资料,现在作一下简单介绍。本身就很简单!

预处理指令的作用

当我们需要选择性的编译某一部分代码时,例如某个函数在windows上和linux上需要不同的代码来实现,就需要在程序中加入预处理指令,编译时使用宏来指定跳过哪些代码、编译哪些代码。

逻辑选择指令

一共有4个:

  1. #if - 如果,后面跟一个宏或宏表达式
  2. #elif - 否则如果,后面跟一个宏或宏表达式
  3. #else - 否则
  4. #endif - 结尾

上面4个指令的意思一目了然,#if#elif后面跟上宏作为条件。程序中是这样的:

#if COND1
    [ vala code 1 ]
#elif COND2
    [ vala code 2 ]
#else
    [ vala code 3 ]
#endif

定义宏

vala程序内部是不能定义宏的,只能使用valac的参数-D定义,用法如下:

valac -D CONDX program.vala

宏表达式

#if#elif后面的条件表达式不但可以是单独的宏,还可以是几个宏的逻辑表达式,格式如下:

  1. “或”表达式: COND1 [ || COND2 ]
  2. “与”表达式: COND1 [ && COND2 ]
  3. “非”表达式: ! COND1 (英文资料里!后面有空格,经本人验证,有无空格都可以)
  4. “等于”表达式: COND1 == COND2 (一个存在,一个不存在)
  5. “不等于”表达式: COND1 != COND2 (两个都存在)

一个宏的名字如果定义了,它的值就是true,否则就是false。利用括号可以组合多个表达式。

下面是英文资料:\

vala-code:
    [ any vala code ] [ pp-condition ] [ any vala code ]
pp-condition:
    #if pp-expression vala-code [ pp-elif ] [ pp-else ] #endif
pp-elif:
    #elif pp-expression vala-code [ pp-elif ]
pp-else:
    #else vala-code
pp-expression:
    pp-or-expression
pp-or-expression:
    pp-and-expression [ || pp-and-expression ]
pp-and-expression:
    pp-binary-expression [ && pp-binary-expression ]
pp-binary-expression:
    pp-equality-expression
    pp-inequality-expression
pp-equality-expression:
    pp-unary-expression [ ==pp-unary-expression ]
pp-inequality-expression:
    pp-unary-expression [ !=pp-unary-expression ]
pp-unary-expression:
    pp-negation-expression
    pp-primary-expression
pp-negation-expression:
    ! pp-unary-expression
pp-primary-expression:
    pp-symbol
    ( pp-expression )
    true
    false
pp-symbol:
    identifier
    
The semantics of the preprocessor are very simple: if the condition is true then the Vala
code surrounded by the preprocessor will be parsed, otherwise it will be ignored. A
symbol evaluates to true if it is defined at compile-time. If a symbol in a preprocessor
directive is not defined, it evaluates to false.

相关文章

  • vala程序预处理指令

    百度了很久都找不到关于vala程序预处理指令的中文资料,于是我到官网找了英文资料,现在作一下简单介绍。本身就很简单...

  • C和指针——简介篇

    程序示例 预处理指令 以上5行都为预处理指令。因为它们是由预处理器解释的。预处理器读入源代码,根据预处理指令对其进...

  • 指令

    C预处理器在程序执行之前查看程序(故称为预处理器),根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容...

  • iOS开发 -- C语言基础12(预处理指令)

    iOS开发 -- C语言基础12(预处理指令) 宏定义 预处理指令简介 1.C语言在对源程序进行编译之前,会先对一...

  • C++详解预处理

    C/C++编译系统编译程序的过程为预处理、编译、链接。预处理器是在程序源文件被编译之前根据预处理指令对程序源文件进...

  • iOS - 条件编译

    1.预处理指令 1)C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释。预处理过程扫描源代码,对其进行...

  • C语言003——基本概念

    C语言003——基本概念 一个简单的C程序基本具备如上所示的结构,包括:预处理指令,函数和语句。 预处理指令 在编...

  • 《JNI开发——基础-C语言 · 一》

    C 程序结构 预处理器指令 函数 变量 语句 & 表达式 注释例子: 程序的第一行 #include 是预处理...

  • C语言 枚举类型和预处理指令

    枚举的定义 预处理指令 所有的预处理指令都是以#开头 预处理指令分为三种 宏定义 条件编译 文件包含 预处理指令在...

  • 预处理指令

    预处理指令的概念 C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文...

网友评论

    本文标题:vala程序预处理指令

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