zoukankan      html  css  js  c++  java
  • gcc -D 传值给代码,默认值为1

    gcc -D 传值给代码,默认值为1

    -D 参数可以给代码中的宏打开一扇门。简单的代码
    #include <stdio.h>

    1. #ifdef WHO
    2. #define NAME "joel"
    3. #elif WHO_NO
    4. #define NAME "no name"
    5. #else
    6. #error no mane
    7. #endif
    8. int main()
    9. {
    10.     printf("hello [%s] ",""NAME"");
    11.     printf("%d ",
    12. #ifdef WHO
    13.             WHO
    14. #elif defined(WHO_NO)
    15.             WHO_NO
    16. #endif
    17.             );
    18. }

    编译下

    1. gcc 123.c
    2. 123.c:11:2: error: #error no mane
    3. 123.c: In function ‘main’:
    4. 123.c:15: error: expected ‘)’ before ‘NAME’
    5. 123.c:22: error: expected expression before ‘)’ token

    有错。
    可以这样gcc -DWHO 123.c
        ./a.out

        hello [joel]
        1
    同时也知道,-DWHO 相当于在代码
        #define WHO 1
    1 就是默认值。
    其实在代码中我们应该更严密些。不应该 用 #if #elif 后直接探测一个宏是否被定义。这样写会更好

    点击(此处)折叠或打开

    1. 探测宏是否被定义
    2. #ifdef WHO
    3. #if defined(WHO)
    4. #elif defined(WHO)


    这样避免简单在 头部定义
    #define WHO
    #define WHO_NO
    这样会报错的

  • 相关阅读:
    springboot + self4j 学习笔记
    git 创建本地分支,并且推送到远程分支
    windows 下生成 ssh key
    Topshelf
    ADSL拨号连接
    EF中使用Contains方法
    elasticsearch中的概念简述
    CriticalFinalizerObject的作用
    sqlserver中的统计语法
    Windbg简单介绍
  • 原文地址:https://www.cnblogs.com/timssd/p/4781172.html
Copyright © 2011-2022 走看看