zoukankan      html  css  js  c++  java
  • C语言-第18课

    第18课 - #error#line

     

    1. #error的用法

    #error用于生成一个编译错误消息,并停止编译

    用法:#error message

    注:message不需要用双引号包围。

    #error编译指示字用于自定义程序员特有的编译错误消息类似的,#warning用于生成编译警告,但不会停止编译。

    例子:自定义错误消息

    #include <stdio.h>

    #define CONST_NAME1 "CONST_NAME1"

    #define CONST_NAME2 "CONST_NAME2"

    int main()

    {  

        #ifndef COMMAND  //如果定义了这个宏就会有下面的操作

        #warning Compilation will be stoped ...

        #error No defined Constant Symbol COMMAND

        #endif

        printf("%s ", COMMAND);

        printf("%s ", CONST_NAME1);

        printf("%s ", CONST_NAME2);

        return 0;

    }

    gcc  -DCOMMAND=”TestCommand” test.c

    这里我们也要区分#ifndef#ifdef

     

    1. #line的用法

    #line用于强制指定新的行号和编译文件名,并对源程序 ,并对源程序的代码重新编号。

    用法:#line number filename   注:filename可省略。

    line编译指示字的本质是重定义__LINE____FILE__

     

    例子:重定义行号和文件名

    #include <stdio.h>

    #line 14 "Hello.c"  //程序的下一行变成了第14行,改程序的名字变成了"Hello.c"

    #define CONST_NAME1 "CONST_NAME1"

    #define CONST_NAME2 "CONST_NAME2"

    void f()

    {

        return 0;

    }

    int main()

    {

        printf("%s ", CONST_NAME1);

        printf("%s ", CONST_NAME2);

        printf("%d ", __LINE__);

        printf("%s ", __FILE__);   

        f();

        return 0;

    }

    通过这种方式,我们可以在别人程序的基础上进行重新的编程,完成只是对自己的文件的调试。

  • 相关阅读:
    使用MySQL存储过程连续插入多条记录
    为什么编程语言以及数据库要从1970年1月1日开始计算时
    关于shtml页面include问题解决方案
    简单实用的FTP操作类
    js实现完美身份证号有效性验证
    .htaccess文件的建立和rewrite_module的启用
    php冒泡排序
    php实现汉诺塔问题(递归)
    简单的mysql数据库备份程序
    选择排序的php实现
  • 原文地址:https://www.cnblogs.com/free-1122/p/9720720.html
Copyright © 2011-2022 走看看