条件编译

一,#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用法

 

结果是:3

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

说明:我们定义了宏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一起写,否则并排写的这条语句是不会执行的。原因不知道,有大神可以告诉一下

posted @ 2014-12-07 11:48  薛小黑  阅读(1016)  评论(0编辑  收藏  举报