我是靠谱客的博主 唠叨冥王星,这篇文章主要介绍#error 和 #line 使用分析,现在分享给大家,希望可以做个参考。

1、#error的用法

#error用于生成—个编译错误消息 

用法  : #error message message不需要用双引号包围

 

#error编译指示字用于自定义程序员特有的编译错误消息

类似的,#warning用于生成编译警告。

 

#error是一种预编译器指示字 

#error可用于提示编译条件是否满足 

                            编译过程中的任意错误信息意味着无法生成最终的可执行程序。

 

2、实例分析 

#error预处理初探     23-1.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <stdio.h>      #ifndef __cplusplus       #error This file should be processed with C++ compiler.   #endif      class CppClass   {   private:       int m_value;   public:       CppClass() {}             ~CppClass() {}  };      int main()   {       return 0;   } 

 

3、编程实验 

#error在条件编译中的应用     23-2.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include <stdio.h>      void f()     {     #if ( PRODUCT == 1 )         printf("This is a low level product!n");     #elif ( PRODUCT == 2 )         printf("This is a middle level product!n");     #elif ( PRODUCT == 3 )         printf("This is a high level product!n");    #else       #error The "PRODUCT" is NOT defined!      #endif    }      int main()   {       f();              printf("1. Query Information.n");       printf("2. Record Information.n");       printf("3. Delete Information.n");      #if ( PRODUCT == 1 )       printf("4. Exit.n");   #elif ( PRODUCT == 2 )       printf("4. High Level Query.n");       printf("5. Exit.n");   #elif ( PRODUCT == 3 )       printf("4. High Level Query.n");       printf("5. Mannul Service.n");       printf("6. Exit.n");   #endif              return 0;   } 

#error不会产生可执行程序,#warnning会产生

 

4、#line的用法

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

           的代码重新编号 

用法 :#line number filename filename可省略) 

#line编译指示字的本质是重定义__LINE__和__FILE__

 

5、编程实验 

#line的使用     23-3.c

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>        int main()     {         printf("%s : %dn", __FILE__, __LINE__);                #line 1 "wss.c"    //重新指定文件名,行号            printf("%s : %dn", __FILE__, __LINE__);                return 0;     }    

 

 

在以前的工程中由最初一个人写代码到多人合作,找出某个人的错误:

复制代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include <stdio.h>      // The code section is written by A.   // Begin   #line 1 "a.c"      // End      // The code section is written by B.   // Begin   #line 1 "b.c"      // End      // The code section is written by Delphi.   // Begin   #line 1 "wss.c"         int main()   {       printf("%s : %dn", __FILE__, __LINE__);              printf("%s : %dn", __FILE__, __LINE__);              return 0;   }      // End  

  

                    这是较为原始的方式,现代软件公司几乎很少见到这种方式了

 

6、小结

            #error用于自定义—条编译错误信息 

            #warning用于自定义—条编译警告信息 

            #error#warning常应用于条件编译的情形 

            #line用于强制指定新的行号编译文件名 

 

最后

以上就是唠叨冥王星最近收集整理的关于#error 和 #line 使用分析的全部内容,更多相关#error内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(62)

评论列表共有 0 条评论

立即
投稿
返回
顶部