GVKun编程网logo

C# #define预处理器(c#预处理器指令)

8

在这里,我们将给大家分享关于C##define预处理器的知识,让您更了解c#预处理器指令的本质,同时也会涉及到如何更有效地#define预处理器、2——PHPdefined函数illdefinedbe

在这里,我们将给大家分享关于C# #define预处理器的知识,让您更了解c#预处理器指令的本质,同时也会涉及到如何更有效地#define预处理器、2——PHP defined函数 ill defined be defined by already defined、c – 如何从#define中删除C风格的转换,所以我可以在预处理器#if中使用它?、c++ 预处理指令#define, #endif...的内容。

本文目录一览:

C# #define预处理器(c#预处理器指令)

C# #define预处理器(c#预处理器指令)

#define PI 
using System;

namespace PreprocessorDAppl {

   class Program {

      static void Main(string[] args) {
         #if (PI)
            Console.WriteLine(PI is defined);
         #else
            Console.WriteLine(PI is not defined);
         #endif
         Console.ReadKey();
      }
   }
}

#define预处理器

#define预处理器

#include <stdio.h>

#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '
'

int main() {

   int area;  

   area = LENGTH * WIDTH;
   printf(value of area : %d\n, area);
   printf(%c\n, NEWLINE);

   return 0;
}

2——PHP defined函数 ill defined be defined by already defined

2——PHP defined函数 ill defined be defined by already defined

*/
 * Copyright (c) 2016,烟台大学计算机与控制工程学院
 * All rights reserved.
 * 文件名:text.cpp
 * 作者:常轩
 * 微信公众号:Worldhello
 * 完成日期:2016年5月18日
 * 版本号:V1.0
 * 问题描述:PHP
 * 程序输入:无
 * 程序输出:无
 */
<?php define("PI1",3.14);
$p = "PI1";
$is1 = defined($p);
$is2 = defined("PI2");
var_dump($is1);
var_dump($is2);
?>
登录后复制

defined()函数可以帮助我们判断一个常量是否已经定义,其语法格式为:

bool defined(string constants_name

若存在则返回布尔类型true,否则返回布尔类型false; (注:bool表示函数返回值类型为布尔类型)

以上就介绍了2——PHP defined函数,包括了defined方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

c – 如何从#define中删除C风格的转换,所以我可以在预处理器#if中使用它?

c – 如何从#define中删除C风格的转换,所以我可以在预处理器#if中使用它?

我想使用以下预处理器定义:

[第三方标题(不能修改)]

#define SWCI_VERSION_MAJOR              (unsigned char) 4
#define SWCI_VERSION_MInor              (unsigned char) 16

当他们以这种方式进行比较时:

[我的实施]

#if SWCI_VERSION_MAJOR >= 4 && SWCI_VERSION_MInor >= 16

然后我得到:

Fatal error C1017: invalid integer constant expression

我注意到,如果我定义它们(unsigned char),则该指令将被接受,但是我无法访问定义,所以如果可能,我想解决该问题.

解决方法

你可以得到这个工作与一点预处理魔术.由于预处理器应用宏的方式,有时可以通过使用多个宏级别进行一些修改. Boost.Preprocessor利用此行为.这个代码利用了这样的事实,即(unsigned char)看起来可以通过前面的宏名称X进行宏调用,该名称X评估为无,仅留下尾数.
#define SWCI_VERSION_MAJOR              (unsigned char) 4
#define SWCI_VERSION_MInor              (unsigned char) 16

#define X(unused)
#define APPLY(x) x

#define MAJOR (APPLY(X SWCI_VERSION_MAJOR))
#define MInor (APPLY(X SWCI_VERSION_MInor))

#if MAJOR >= 4 && MInor >= 16
#error "Version is greater or equal to 4.16"
#endif

有关#if评估true并打印我添加的#error消息的示例,请参见https://goo.gl/GOsLDL.

c++ 预处理指令#define, #endif...

c++ 预处理指令#define, #endif...

常见的预处理指令有:

# 空指令,无任何效果

# include 包含一个源代码文件

#define 定义宏

#undef 取消已定义的宏

#if 如果给定条件为真,则编译下面代码

#ifdef 如果宏已经定义,则编译下面代码

#ifndef 如果宏没有定义,则编译下面代码

#elif 如果前面的#if给定条件不为真,当前条件为真,则编译下面代码

#endif 结束一个#if......#else条件编译块

#error 停止编译并显示错误信息

 

什么是预处理指令?

预处理指令是以#号开头的代码行。#号必须是该行除了任何空白字符外的第一个字符。#后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。预处理指令是在编译器进行编译之前进行的操作.预处理过程扫描源代码,对其进行初步的转换,产生新的源代码提供给编译器。可见预处理过程先于编译器对源代码进行处理。预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行响应的转换。预处理过程还会删除程序中的注释和多余的空白字符。

工作中经常这样使用宏:

1. 常常使用宏来调试代码

#if 0

///< 旧的代码(或函数) (旧的代码, 将会被预处理的时候,屏蔽掉, 不进行编译)

#else

///< 新的代码(或函数)

#endif

 

#ifndef JOE_DEBUG

///< 新的代码(或函数)

#else

///< 旧的代码(或函数) (旧的代码, 将会被预处理的时候,屏蔽掉, 不进行编译)

#endif

 

#ifdef Q_DEBUG

///< 新的代码(或函数)

#else

///< 旧的代码(或函数) (旧的代码, 将会被预处理的时候,屏蔽掉, 不进行编译)

#endif<br><br>

  通过以上类似的方法, 可以防止由于过多的修改代码, 而把代码修改的一塌糊涂. 建议修改代码的时候, 做到保护好以前的代码, 尽量不进行代码的删除操作. 要养成使用宏和注释代码的习惯. 

  2. 使用宏来根据不同的平台包含不同的文件. 很多时候, 我们的代码是需要跨系统平台编译和运行的. 比如: 一个小功能代码,

需要既可以在Win下面运行,  还要可以在Max, linux上面运行. 可是, 因为系统的不一样, 有些时候, 头文件的包含的名字是不一样的.

所以,这时候, 就是用到了宏. 因为我们使用编程工具分不同的系统平台, 编程工具自身的环境就会包含不同平台的系统宏, 假设OS_Win,

OS_Mac, OS_Linux 分别代码三种系统不同的宏. 而且,Win版本的编程工具中已经定义了OS_Win, 类似的Mac下,

编程工具定义的是OS_Mac, Linux...

#ifdef OS_Win

#include <windows.h>

#endif

 

#ifdef OS_Mac

#include <mac.h>

#endif

 

#ifdef OS_Linux

#include <linux.h>

#endif

 

/** 不仅使用在头文件的包含. 而且,对于不同的系统平台. 你也可以使用不同的代码结构. */

今天关于C# #define预处理器c#预处理器指令的讲解已经结束,谢谢您的阅读,如果想了解更多关于#define预处理器、2——PHP defined函数 ill defined be defined by already defined、c – 如何从#define中删除C风格的转换,所以我可以在预处理器#if中使用它?、c++ 预处理指令#define, #endif...的相关知识,请在本站搜索。

本文标签: