c语言之条件编译

#include<stdio.h>
#include<iostream>#define CORRECT "myfirst"

int main() {
    char str[10];
    int func(char* str1, char* str2);
    printf("输出你最喜欢的:\n");
    scanf("%s", str);

//如果没有定义CORRECT宏名,则在接下来进行定义
#ifndef CORRECT
#define CORRECT "test"
#endif // CORRECT
    if (func(str, CORRECT) == 0) {
        printf("谢谢你\n");
    }
    else
    {
        printf("不好意思了\n");
    }
    system("pause");
    return 0;
}
int func(char* str1, char* str2) {
    return strcmp(str1, str2);
}

判断是否有该宏存在,如果没有再进行定义。

这里我遇到个问题,假设我在定义时#define CORRECT "my first"里面进行空格,那么之后无论我怎么输入,总是得到(func(str, CORRECT)=-1。还不知道是什么原因,应该是不允许字符串中有空格?

第二种方式:

#include<stdio.h>
#include<iostream>
#define ROUND 1
#define PI 3.14

int main() {
    int a,b;
    double c;
    a = 2;
    b = 3;
//如果ROUND为1,那么运行接下来的语句
#if ROUND
    c = (a + b)*PI*2;
    printf("%.2f\n", c);
//否则运行下面的语句
#else
    c = a + b;
#endif
    system("pause");
    return 0;
}

使用条件编译可以只允许编译源程序汇总满足条件的程序段,使生成的目标程序较短,从而减少了内存的开销并提高了程序的效率。

原文地址:https://www.cnblogs.com/xiximayou/p/12128965.html

时间: 2024-10-16 01:53:42

c语言之条件编译的相关文章

c语言中条件编译相关的预编译指令

一. 内容概述 本文主要介绍c语言中条件编译相关的预编译指令,包括#define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. 二.条件编译 条件编译是根据实际定义宏(某类条件)进行代码静态编译的手段.可根据表达式的值或某个特定宏是否被定义来确定编译条件. 最常见的条件编译是防止重复包含头文件的宏,形式跟下面代码类似: 1 #ifndef ABCD_H 2 #define ABCD_H 3 4 // ... some declarat

(转)C语言的条件编译#if, #elif, #else, #endif、#ifdef, #ifndef

有些程序在调试.兼容性.平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的代码. (一)条件编译方法 条件编译是通过预编译指令来实现的,主要方法有: 1.#if, #elif, #else, #endif #if 条件 1 代码段 1#elif 条件 2 代码段 2...#

【学习笔记】【C语言】条件编译

1.条件编译的概念 在很多情况下,我们希望程序的其中一部分代码只有在满足一定条件时才进行编译,否则不参与编译(只有参与编译的代码最终才能被执行),这就是条件编译. 2.基本用法 #if 条件1  ...code1... #elif 条件2  ...code2... #else  ...code3... #endif 1>如果条件1成立,那么编译器就会把#if 与 #elif之间的code1代码编译进去(注意:是编译进去,不是执行,很平时用的if-else是不一样的)?2> 如果条件1不成立.条

关于C语言程序条件编译的简单使用方法

#include <stdio.h> #include <stdlib.h> #define Mode //如果定义了Mode,那么就执行这个函数 #ifdef Mode void print_h(void) { printf("world\n") ; } #else //如果没有定义Mode,那么就执行下面这个函数 void print_h(void) { printf("hello world\n") ; } #endif int mai

C语言条件编译

学习C语言也快两年了,一直知道有这东西,但是却一直没去认真学习下.其实还是非常简单的.只怪自己太懒. 只有在昨天学习<THINKING IN JAVA>时候才看到,JAVA用异常来代替了C语言的条件编译功能.好坏自己就不敢妄加判断了. 在网上学习了一会,自己归纳如下:(主要是感觉自己写的例子比网上的看起来快多了) 预处理程序提供了条件编译的功能.可以按不同的条件去编译不同的程序部分,因而产生不同的目标代码文件.这对于程序的移植和调试是很有用的.条件编译有三种形式,下面分别介绍. 第一种形式 第

SDWebImage源码阅读前的准备(一)预处理条件编译

阅读前的扩展: 条件编译:#ifdef #elif #ifndef #if #else #endif 的用法,及 #define #undef 的用法. #ifdef/#elif/#ifndef/#if/#else/#endif 这几个条件编译指令是在进行条件编译的时候使用的. 学习条件编译首先对C语言的预处理进行学习,C语言由源代码生成的各阶段如下: C源程序->编译预处理->编译->优化程序->汇编程序->链接程序->可执行文件 其中 编译预处理阶段,读取c源程序,

编程精粹--编写高质量的C语言代码(2):自己设计并使用断言(一)

上一篇文章<<编程精粹--编写高质量C语言代码(1):假想编译程序>>中讲述了如何利用编译程序的所有警告设施以及lint程序等来更加容易地自动发现程序中的错误.但是即使使用编译程序提供的所有警告设施,编译程序所发现的错误,也只是程序错误中的一小部分.例如以下一行代码: strCopy=memecpy(malloc(length),str,length)); 当malloc 调用失败时,返回一个空指针,而memcpy如果没有处理空指针,程序就会出现错误.编译程序是无法查出这种或其他类

条件编译#ifdef的妙用详解

c语言中条件编译相关的预编译指令,包括  #define.#undef.#ifdef.#ifndef.#if.#elif.#else.#endif.defined. #define            定义一个预处理宏#undef            取消宏的定义 #if                   编译预处理中的条件命令,相当于C语法中的if语句#ifdef              判断某个宏是否被定义,若已定义,执行随后的语句#ifndef            与#ifdef

C#图解教程 第二十四章 反射和特性

反射和特性元数据和反射Type 类获取Type对象什么是特性应用特性预定义的保留的特性Obsolete(废弃)特性Conditional特性调用者信息特性DebuggerStepThrough 特性其他预定义特性有关应用特性的更多内容多个特性其他类型的目标全局特性自定义特性声明自定义特性使用特性的构造函数指定构造函数使用构造函数构造函数中的位置参数和命名参数限制特性的使用自定义特性的最佳实践访问特性使用IsDefined方法使用GetCustomAttributes方法 Note 类的元数据包含