码迷,mamicode.com
首页 > 其他好文 > 详细

条件编译

时间:2014-12-07 12:28:56      阅读:293      评论:0      收藏:0      [点我收藏+]

标签:blog   http   sp   on   文件   2014   问题   log   bs   

一,#pragma

这个命令是定义编译器的状态以及指示编译器做某些事情。我们只介绍常见的一些。

(1)#pragma once  这个加到.h文件头前面,这样就表示.h文件只被编译一次,当然是在没有被改变的时候。

(2)#pragma comment(lib,“自己编写lib所在路径”)这条命令告诉链接器在链接时候链接这个库。当然你也可以再project setting(vc)中进行添加这个lib。

二,#ifdef/#endif,#ifndef/#endif,#if …#else/#endif.这些命令是条件编译,告诉编译器满足一定条件时候才进行编译。光说不干,等于扯淡,直接上程序。

(1)#ifdef/#endif,#ifndef/#endif用法

 

bubuko.com,布布扣

结果是:3

(2)#if …#else/#endif.用法

bubuko.com,布布扣

说明:我们定义了宏vv=0;因此预编译时候宏处理,将vv全部替换成0,然后条件编译,因为我们vv=0;所以编译时#else的语句块,记住是语句块。

首先我说明两个问题:第一,#if …#else/#endif.和if..else区别 是:编译时,编译器只会编译#if …#else的其中一个,则生成的程序文件(.exe文件)中只会有#if …#else语句块中的一个。如果用普通if语句,生成的程序文件就会有执行代码既有if的又有else的;还有就是if..else的语句块要用{},#if..#else不用。

第二,输出的两个I am ok,而不是三个。语句不能和#if或#else一起写,否则并排写的这条语句是不会执行的。原因不知道,有大神可以告诉一下

条件编译

标签:blog   http   sp   on   文件   2014   问题   log   bs   

原文地址:http://www.cnblogs.com/xuexiaohei/p/4149229.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!