关于C的预编译 宏定义 的一些使用
来源:互联网 发布:js 父窗口 span 编辑:程序博客网 时间:2024/04/28 18:23
头文件 防止重复包含
================
根据#define 和条件编译 #ifdef、#ifndef #else #endif 最经常的使用是 头文件 防止重复包含。
但是 使用
#pragma once
更好,现在 gcc cl.exe 都支持,它不但代码更少,而且不用为宏起名字,更好。
#pragma 说明编译器信息//用法复杂,参考http://baike.baidu.com/view/1451188.htm
#warning 显示编译警告信息
#error 显示编译错误信息
可以在这些条件编译中 给出某条件下的 提醒。比如 要求定义的宏没有定义,就#error,停止编译。
条件编译 中的多个条件,多个宏同时判断
====================
还有 条件编译中 ,比如 同时判断俩条件的
#ifdef ( a && b)该怎么写呢?如果是ifdef 或者 ifndef 就不能这么写了。
得用#if (a==1 && b==2)这种写法了。试着去掉 #define b 2,条件里面的 编译信息 和 输出 就不会显示了。
#include <stdio.h>#include <iostream>using namespace std;int main(int argc,char **argv){ cout<<"main"<<endl; #define a 1 #define b 2// #ifdef a && #ifdef b #if (a==1 && b==2 ) #pragma message("\npragma message YES Defined a b\n") cout<<"YES Defined a and b??"<<endl; #endif return 0;}
刚发现 ifdef也是可以多个条件的:
类似:#if defined _DEBUG || defined VLD_FORCE_ENABLE
//刚从boost-jam-3.1.18 的源码(sf.net链接)中的pwd.c 中看到的,积累下。//看来cl貌似还定义了 NT 变量,GNU GCC定义了 __GNUC__/* MinGW on windows declares PATH_MAX in limits.h */#if defined(NT) && ! defined(__GNUC__) #include <direct.h> #define PATH_MAX _MAX_PATH#else #include <unistd.h> #if defined(__COMO__) #include <linux/limits.h> #endif#endif
From: http://www.cnblogs.com/ayanmw/archive/2012/07/20/2601063.html
0 0
- 关于C的预编译 宏定义 的一些使用
- C/C++的预编译和宏定义
- C/C++的预编译和宏定义
- 整理的宏定义与预编译
- rtems中对于一些预编译宏的使用:SCORE_EXTERN
- 关于预编译语句使用的注意事项
- 利用C语言的预编译隐藏函数定义
- C/C++的预编译宏做成代码模版使用
- javascript中使用var定义变量的预编译效果
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- C中的预编译宏定义
- Action中result的Types 属性
- JZP Set
- 日期类
- codeforces 118A String Task(字符串水题)
- Opencv中HOG+SVM进行行人检测
- 关于C的预编译 宏定义 的一些使用
- 坐标移动
- B-tree/B+tree/B*tree
- 8大常见蔬果助准妈妈夏季养生
- 使用sublime text2如何新建文件快速生成HTML头部信息?
- 互联网时代的社会语言学:基于SNS的文本数据挖掘(转载)
- 胜多负少的功夫大使馆
- IOS--正则表达式的使用(字符串的查找和替换)
- opengl读取24位BMP文件为纹理并处理黑色背景为透明