C-基础:关于预编译以及宏
这是没有引入任何头文件时,如果使用"NULL",编译器会报错:没有定义NULL。此时可用下面代码定义。
#undef NULL //#undef 是在后面取消以前定义的宏定义
#if defined(__cplusplus) //区别于#ifdef,#if defined的意思是如果在编译这几行之前,已经定义过(&& || && ||)等标识符#define NULL 0 //#define是预处理宏定义命令#else
#define NULL ((void *)0)//NULL ((void*)0) C中的“标准”写法,NULL被替换为一个void*类型的指针右值,等于0;由于是void*类型,可以隐式转化为其它类型的指针。
#endif
一,#undef
#undef 是在后面取消以前定义的宏定义,该指令的形式为:#undef 标识符
#include <iostream.h>
#include<string.h>
#define MAX 5
#undef MAX
int _tmain(int argc, _TCHAR* argv[])
{
char name[MAX]="abcd";
std::cout<<"MAX = "<<MAX<<std::endl;
for(int i=;i<MAX;i++)
std::cout<<name<<" "<<std::endl;
system("pause"); return ;
}
得到错误消息:未定义符号 'MAX',初始值设定项太多
#define TEST_A 1
#define TEST_CLASS_A clase T1
#include "TEST.h"
#undef TEST_A
#undef TEST_CLASS_A
在这一个文件中使用宏定义:
#undef TEST_A 1
#undef TEST_CLASS_A clase T1
出了#include "TEST.h" 这个文件宏定义释放掉,就是这个意思。
#include <stdio.h>
int main( void )
{
#define MAX 200
printf("MAX= %d\n",MAX);
#undef MAX
#define MAX 300
printf("MAX= %d\n",MAX);
return ;
}
C-基础:关于预编译以及宏的更多相关文章
- Visual Studio 2013 配置多个Release版本,并为每个版本配置预编译的宏
最近开发过程中,需要将同一份工程编译成两个版本,分别为ReleaseA和ReleaseB. ReleaseB比ReleaseA少了部分功能,所以希望在编译的时候,根据不同的版本编译工程中相应的代码. ...
- js - 基础 之 预编译总结
js运行步骤 语法解析(检查有无语法错误) 预编译 解释运行(将 js 翻译成计算机识别的语言(0.1组成),翻译一行执行一行) 预编译 [全局]: 创建 GO( Grobal Object ) 对象 ...
- Unity3D 多平台_预编译相关宏定义
http://www.cnblogs.com/zhaoqingqing/p/3510332.html API地址:http://docs.unity3d.com/Documentation/Manua ...
- 通过预编译头文件来提高C++ Builder的编译速度
C++ Builder是最快的C++编译器之一,从编译速度来说也可以说是最快的win32C++编译器了.除了速度之外,C++builder的性能也在其它C++编译器的之上,但许多Delphi程序员仍受 ...
- C中的预编译宏定义
可以用宏判断是否为ARC环境 #if _has_feature(objc_arc) #else //MRC #endif C中的预编译宏定义 -- 作者: infobillows 来源:网络 在将一 ...
- C++头文件中预编译宏的目的
C++头文件中预编译宏的目的 eg: #ifndef _FACTORY_H_#define _FACTORY_H_......#endif //~_FACTORY_H_ 防止头文件被重复包含,导致变量 ...
- C++ 内置宏定义 与 预编译指令
内置宏和预编译指令, 在代码调试.单元测试.跨平台代码中经常会用到.这里记录一下. 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE ...
- linux, windows, mac, ios等平台GCC预编译宏判断
写跨平台c/c++程序的时候,需要搞清各平台下面的预编译宏,区分各平台代码.而跨平台c/c++编程,GCC基本在各平台都可以使用.整理了一份各平台预编译宏的判断示例. 需要注意几点: * window ...
- GCC预编译宏查看
编译调试代码时,总是遇到要使用编译器预编译宏进行跨平台编译. gcc -E -dM -</dev/null 编译器版本 Thread model: posix gcc version 5.4.0 ...
随机推荐
- js获取动态日期时间
var timer=null; function tt(n){ if(n<10){ return '0'+n }else{ return n+'' } } timer=setInterval(f ...
- UVa 1643 Angle and Squares (计算几何)
题意:有n个正方形和一个角(均在第一象限中),使这些正方形与这个角构成封闭的阴影区域,求阴影区域面积的最大值. 析:很容易知道只有所有的正方形的对角形在一条直线时,是最大的,然后根据数学关系,就容易得 ...
- shell初级-----数据呈现方式
输入与输出 Linux系统将每个对象当作文件处理,这包括输入和输出进程.Linux用文件描述符来标识每个文件对象.文件描述符是一个非负整数,可以唯一标识会话中打开的文件.每个进程一次多可以有九个文件描 ...
- Codeforces 378C
DFS连通块,思路就是搜到底,然后一个一个回溯(填上X)上来 #include <iostream> #include <stdio.h> #include <strin ...
- ie下,php HTTP_REFERER获取失败的整理
HTTP_REFERER有效的情况1.以iframe 形式调用地址2.以window.open调用,打开新页面window.open(url);3.使用window.location.replace在 ...
- The Django Book学习笔记 06 admin
自定义字段标签 自定义一个标签, 你只需在模块中指定 verbose_name=' ' from django.db import models # Create your models here. ...
- 520 Detect Capital 检测大写字母
给定一个单词,你需要判断单词的大写使用是否正确.我们定义,在以下情况时,单词的大写用法是正确的: 全部字母都是大写,比如"USA". 单词中所有字母都不是大写,比如&q ...
- POJ 3522 Slim Span 暴力枚举 + 并查集
http://poj.org/problem?id=3522 一开始做这个题的时候,以为复杂度最多是O(m)左右,然后一直不会.最后居然用了一个近似O(m^2)的62ms过了. 一开始想到排序,然后扫 ...
- LVS实现负载均衡
三台主机模拟 sishen_63(分发器): eth0(Bridge):192.168.1.63 eth1(vmnet4):192.168.2.63 sishen_64(RealServer1): e ...
- 远程访问rhel7的oracle中的问题
客户端得到的错误信息通常是:ORA-12170: TNS:连接超时 这时,我们基本可以肯定是服务器没有开放1521端口(假设你用默认设置) 解决方法: (1)假如你是在一个局域网环境,配置了防火墙.那 ...