预处理指令的疑惑

C语言#define预处理详解 目录 一、使用#define定义标识符常量 语法1: 常量与常变量的不同: 注意: 语法2: 二、#define来定义带有参数的宏 三、C语言给我们定义好的一些标识符常量 一、使用#define定义标识符常量 语法1: #define MAX 100 注意使用#define末尾不需要带; MAX是一个常量,是使用#define定义的一个标识符常量!!! 我为什么要在这里强调这是一个常量呢?因为它和普通常量一样不可被修改 大家可能会疑惑使用const修饰的变量不也是... 阅读详情

用到预处理指令了就查阅msdn学习并参照例子练习了下。暂时先记录下遇到的问题。

1。预处理指令不预先定义

debug模式下#debug 则一直为true即使注释掉也能使用其他预处理指令如果不预先声明,直接判断结果不出错但是判断结果为false

2.在release下 Console.WriteLine函数无法使用

#define DEBUG
#define VC_V7
using System;
public class MyClass
{
    static void Main()
    {
#if (DEBUG && !VC_V7)
        Console.WriteLine("DEBUG is defined");
#elif (!DEBUG && VC_V7)
        Console.WriteLine("VC_V7 is defined");
#elif (DEBUG && VC_V7)
        Console.WriteLine("DEBUG and VC_V7 are defined");
#else
        Console.WriteLine("DEBUG and VC_V7 are not defined");//在release模式下 这里会编译错误
#endif
    }
}

 

但是同样类型用#if #else #endif就可以通过?如下

#if (xx)
            Console.WriteLine("xx defined");
#else
            Console.WriteLine("xx not defined");
#endif

但是此段代码无论在debug还是release下都能正常执行 同样在未预先定义预处理指令

有关编译预处理顺序的讨论     众所周知,程序编译过程一般分为预处理,编译,汇编,链接四个过程。而编译预处理一般主要做3件事:宏扩展,去掉注释,和合并头文件。最近遇到了关于宏扩展和合并头文件执行顺序的讨论,根据牛人的说法,应该是先合并头文件,然后开始宏扩展。    一听到这个结论的时候,我心里就产生了疑问,但是因为当时不确信,就没有当场质疑“权威”。我心里的疑问是想象中的这样一段代码://test1.cpp#define 阅读详情

相关推荐

QGIS基于快鸟(QuickBird)影像统计小麦种植面积

​01数据情况 本次选用某地4月份快鸟(QuickBird)影像为例,使用QGIS演示提取小麦播种情况,并按照200米*200米分区计算种植面积的过程。 注:本文对应的操作视频作为今天第二篇推送同时发布,习惯看视频的朋友可以点击观看。 附数据压缩包: 链接:https://pan.baidu.com/s/1JVUS8uAOR61RxC1n9Or9_w 提取码:qgis 含快鸟影像QB_subset.tif和200*200米分区矢量图层200Mgrid.shp。 ...

QGISClass的博客 1979

错误积累3:unrecognized preprocessing directive

unrecognized preprocessing directive: 未识别的预处理指令 解决办法:查看预编译指令是否有拼写错误

懂软硬件的老中医 7687

用于多种无人机协作的群体智能算法:综合综述

随着无人机技术的快速高水平发展,将多架无人机作为自主控制的编队应用于复杂情况是一个新兴领域的代表之一。在实现自主控制的挑战中,碰撞避免、任务分配、路径规划和编队重构是关键功能。本文对各种经典的无人机群智能算法进行了系统的总结和分析。

erjia_的博客 1万+

C++报错无效的预处理命令include_C语言的预处理指令介绍

C 的预处理器不是编译器的组成部分,它是编译过程中一个单独的步骤,它们会指示编译器在实际编译之前完成所需的预处理。GCC编译C语言程序的全过程C 语言的预处理指令是以 # 号开头的代码行,# 后是指令关键字,整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。下面是一些常见预处理命令的使用介绍。#include包含一个源代码文件#include 即从系统库中获取 stdi...

weixin_39715926的博客 3047

软件工程大作业——图书管理系统/图书个性化推荐与实现系统

软件工程期末大作业,图书管理系统,包含ER图、程序流程图、属性图、结构图

2401_82857325的博客 3646

HFSS实战(三)——过孔via TDR仿真

在上一讲中,主要是通过观察S参数确定via的优化是否达到目标。但S参数只能看到一个整体的结果,并不知道via真实的阻抗是多少?想要单独确定via的阻抗,最好还是通过TDR的仿真。

luohuo9844的博客 1万+

unrecognized preprocessing directive

unrecognized preprocessing directive 意思是无法识别的预处理指令。写错了,将其纠正问题解决。通过报错内容可以知道是。

weixin_62179295的博客 1539

NXP S32K3xx 多次复位(reset)后MCU跑死、崩溃、出错分析

s32k3出现多次复位后死机的情况

HeFlyYoung的博客 9514

Error[Pe011]: unrecognized preprocessing directive

最近编程出现了一个这样的报错,unrecognized preprocessing directive (无法识别的预处理指令) 预处理功能常用的主要以下3种: 1.宏定义 2.文件包含 3.条件编译 如果出现这样的报错,查看预编译指令是否发生错误,例如关键词有没有写错(include,define ifndef endif等),是不是加了不该加的符号(如: ;)...

AAlonso的博客 1万+

吃透Chisel语言.02.Chisel+VS Code+Ubuntu/WSL2开发环境搭建与使用

既然是学Chisel语言,那肯定得先把环境配置好,磨刀不误砍柴工嘛。而且有个测试环境的话,在后期的学习过程中自己去试运行代码段可以加深学习效果。这里推荐使用Ubuntu或者基于WSL2(Windows Subsystem Linux 2)的Ubuntu,本人使用的是WSL2上的Ubuntu 20.04.3 LTS,在使用体验上与Ubuntu几乎没有区别,且能同时使用Windows提供的诸多便利。...

github-3rr0r的博客 8447

Calibre :Standard Verification Rule Format(SVRF) Manual (1-2)

摘要:SVRF规则文件是用于Calibre和ICverify工具的脚本文件,包含层定义、规则检查、注释、预处理指令等元素。规则文件支持全局/局部层定义、隐式层操作,以及条件编译指令(#DEFINE/#IFDEF等)。宏功能(DMACRO/CMACRO)可实现代码复用,支持参数化层操作和嵌套调用。预处理指令支持版本控制(#IFDEFCALIBRE_VERSION)和环境变量默认值设置(#PRAGMAENV)。宏中的层名具有局部作用域,可通过特殊语法实现全局层名指定,LOCAL()修饰符可创建调用作用域内的唯一

u013620135的博客 1334

预处理指令讲解

容易会 不懂留言

zjx06136的博客 611

Python爬虫实战:使用最新技术爬取新华网新闻数据

在当今信息爆炸的时代,网络爬虫技术已经成为获取互联网数据的重要手段。作为国内权威新闻媒体,新华网每天发布大量高质量的新闻内容,这些数据对于舆情分析、市场研究、自然语言处理等领域具有重要价值。本文将详细介绍如何使用Python最新技术构建一个高效、稳定的新华网新闻爬虫系统。本文详细介绍了如何使用Python最新技术栈构建一个高效、稳定的新华网新闻爬虫系统。我们从基础爬虫开始,逐步添加了代理支持、用户代理轮换、请求延迟、重试机制、动态页面渲染、数据存储等高级功能,最终实现了一个生产可用的分布式爬虫系统。

2201_76125261的博客 1771

C语言经典面试题100道(附完整答案)

关注、星标公众号,直达精彩内容来源:https://blog.youkuaiyun.com/qq_42613510/article/details/81225935做了校对与详解,方便大家参考。最后编程答案自己做的,还没写完,可能不全,需要自己百度答案。有什么问题请评论,会及时修改,避免误导大家。1.请填写bool , float, 指针变量 与“零值”比较的if语句。 提...

李肖遥的专栏 1万+

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

C语言实用log宏定义

C语言已经做了蛮久了,一直不知道平时的打印宏是怎么定义的。今天参考了他人写的一篇关于:#、##、VA_ARGC、##VA_ARGC 说明的文章,自己定义了4个level的log打印宏,感觉还挺好玩,终于不用再对这个迷惘了!感谢这位大神,顺便附上自己的代码。 参考文章: https://blog.youkuaiyun.com/q2519008/article/details/80934815 ...

qq_34199740的博客 768

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

c语言.h文件实例,C 语言项目中.h文件和.c文件的关系

那是一个被 遗忘的年代,在编译器只认识.c(.cpp))文件,而不知道.h是何物的年代。那时的人们写了很多的.c(.cpp)文件,渐渐地,人们发现在 很多.c(.cpp)文件中的声明语句就是相同的,但他们却不得不一个字一个字地重复地将这些内容敲入每个.c(.cpp)文件。但更为恐怖的是,当其中 一个声明有变更时,就需要检查所有的.c(.cpp)文件,并修改其中的声明,啊~简直是世界末日降临!终于,...

weixin_31544577的博客 2693

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

vs2022中<stdio.h>头文件问题

vs2022使用过程中的问题

specialkey的博客 285

学习笔记

1, 学习第二章“数据类型”内容。 2, 内容:变量与常量,基本内置类型,声明与定义,static , extern(略懂) , const,auto , register , typedef(不太懂), #define , 枚举(还没看)。 3,疑问 (1)声明与定义不太懂(2)强制转换。(3)extern用法不会,没有调试成功。(4)typedef struct的用法...

sinat_42650353的博客 197

C# 预处理器指令

1.1 #define 和 #undef #define:在文件开头声明 配合#if #endif 让编译器实现代码块的执行 #undef: 在文件开头说明 配合#if #endif 让编译器不编译代码块中内容 1.2 #if、#elif、#else、#endif 结合#define、#undef 以及逻辑运算 使编译器执行对应代码块下的内容 1.3 #warning 和 #error #warning:当编译器执行到对应语句时,会提示声明的警告文本、代码正常运行 #error:当编译器

weixin_45496106的博客 976

【黑马程序员】C语言学习笔记(3)-预处理指令

C语言源程序在进行编译、链接之前会进行检测是否有一些特殊的预处理指令,若检测一些特殊的预处理指令则会进行相应的处理。C语言中多有的预处理指令都以符号“#”开头,并且结尾不使用分号。预处理指令在程序中出现的位置没有限定,即可以出现在任何地方,它的作用范围是从它出现的位置到文件尾。但一般我们把预处理指令写在文件的开头,这种情况下,他的作用范围会是整个源程序文件。C语言主要提供了三大类预处理指令:宏定义

Little__Coder的博客 636

C/C++语言预处理,编译,汇编,链接的详细过程讲解

一、问题背景 最近博主在复习各类编程语言知识时,在类比Java解释型高级语言的运行机制时,第一时间想到了C/C++的运行机制,于是博主我查阅相关资料后对C/C++的运行机制做一个详细但易懂的总结归纳。 二、C/C++的运行机制 程序要运行起来,必须要经过四个步骤:预处理、编译、汇编和链接。 预处理编译汇编链接hello.c, hello.hhello.ihello.shello.o或hello.o...

快乐李同学的博客 6216

编译链接和预处理

因为我们的宏定义不会进行语法的检查,只会进行无脑的替换,即使我们在宏定义当中的语法是错误的我们的程序也会直接替换到正式的代码当中,对编写代码造成困扰。🌺按照我们正常的代码的编写的逻辑我们上面的代码应该可以正常的运行但是实际上却不是,这是因为我们在if当中使用了宏定义替换,而我们的宏定义替换已经定义了一个分号,而我们在if语句当中又重新加入了一个分号,使得我们下面的if无法进行特定的匹配。假如我们在我们的程序当中定义了一个宏常量,那么我们在程序进行预处理的时候会将我们的关键字直接替换成我们对应的值。

lmbuhuiku的博客 577

Learning C++ 之 1.10 初识预处理器

预处理器是一个很好的思想,即一个在程序编译之前提前独立运行的一段代码。当预处理器运行的时候,他会从code的头到尾寻找特殊指令。特殊指令一般指的是以#开头的,回车结束的代码(不是;号结尾)。有非常多的特殊指令符,下面会一一介绍。预处理器并不是智能的,他不理解C++语法,她只是在编译器运行之前操作脚本,然后预处理器的结果输出给编译器。预处理器并不会修改代码,相反,预处理器做的所有操作都是存在临时内存...

yingmuliuchuan的博客 229

C程序编译流程之预处理器

介绍C程序编译流程的预处理环节

Daniel Leng的博客 273

#90_代码开关预处理的详解

摘要: 本文介绍了在C语言中使用预处理器宏控制死代码的几种方法。用户已定义#define SWITCH_FOR_DEAD_CODE 0宏开关,可通过以下方式使用: #if !SWITCH_FOR_DEAD_CODE包裹代码(当宏为0时编译) #if SWITCH_FOR_DEAD_CODE包裹代码(当宏为非0时编译) 直接使用#if 0...#endif简单禁用代码 文中澄清了常见的错误用法,如#ifnend不是有效指令,正确的结束标记应为#endif,并区分了#ifndef(检查未定义)的不同用途。提供了

qq_73850061的博客 261
上一篇: .NET面试题
下一篇: Nhibernate学习笔记问题记录
blue_maple
博客等级 码龄22年 8粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值