• 2015-11-25 #error和#line的使用


    1、#error用于生成一个编译错误消息,并立即停止编译。

    1.1 用法:  #error  message  //注:message不用加引号

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

    1.3使用实例:

     1 #include<stdio.h>
     2 
     3 void main()
     4 {
     5 
     6 #ifndef COMMAND
     7 #error COMMAND Undefined...
     8 #else
     9 printf("%s",COMMAND);
    10 getchar();
    11 #endif
    12 
    13 }

    当我们对上述代码进行编译时,编译器提示错误:COMMAND Undefined...,然后编译器停止编译。

    这时候如果我们在代码中对COMMAND进行定义,如下:

     1 #include<stdio.h>
     2 
     3 #define COMMAND "POWER ON"
     4 
     5 void main()
     6 {
     7 
     8 #ifndef COMMAND
     9 #error COMMAND Undefined...
    10 #else
    11 printf("%s",COMMAND);
    12 getchar();
    13 #endif
    14 
    15 }

    这个时候,代码正常运行。

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

    2.1 用法:#line number  filename //其中filename可以省略

    #line的本质是重定义 _FILE_和_LINE_。

    2.3 使用实例:

     1 #include<stdio.h>
     2 
     3 
     4 void main()
     5 {
     6 
     7 
     8 }
     9 
    10 #line 20 "Mr Wan"
    11 
    12 void fun()
    13 {
    14 int a
    15 int b;
    16 int c
    17 }

    这个时候编译器会报错,错误信息如下:

    1>Mr Wan(24) : error C2143: 语法错误 : 缺少“;”(在“类型”的前面)
    1>Mr Wan(26) : error C2143: 语法错误 : 缺少“;”(在“}”的前面)

    这个时候错误提示显示文件名和行号就不是之前的行号和文件名了,而是我们自定义的行号和文件名,这就有一个好处了。当很多人在编写同一个C文件代码的时候,假如每个人在其开始写代码之前都自定义自己的行号和文件名,这样当编译出错时就知道是谁编写的代码的哪一行出了问题,这样就方便问题的查找了。

  • 相关阅读:
    javascript大神修炼记(5)——OOP思想(封装)
    javascript大神修炼记(4)——循环
    javascript大神修炼记(3)——条件分支
    javascript大神修炼记(2)——运算符
    javascript大神修炼记(1)——入门介绍
    07 PB12.5版本的WEBSERVICE部署指南
    06 DW.NET在C#中应用的特殊注意事项
    分享一款html5实现图片生成多种尺寸手机封面
    cordova打包时执行到:processArmv7DebugResources时报错
    Video标签的playsinline属性
  • 原文地址:https://www.cnblogs.com/wan0807/p/4994832.html
Copyright © 2020-2023  润新知