美文网首页
23_#error和#line使用分析

23_#error和#line使用分析

作者: 编程半岛 | 来源:发表于2018-03-20 17:00 被阅读11次

    关键词:#error的用法、 #error在条件编译中的应用、#line的用法

    1.#error的用法

    • #error用于生成一个编译错误消息
    • 用法:#error message,其中message不需要用双引号包围
    • #error编译指示字用于自定义程序员特有的编译错误消息,类似的,#warning用于生成编译警告
    • #error是一种预编译器指示字
    • #error可用于提示编译条件是否满足
    #include <stdio.h>
    
    // 使用#error提示错误信息
    #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;
    }
    

    输出结果:

    1.c:4: error: #error This file should be processed with C++ compiler.
    1.c:7: error: expected ‘=’, ‘,’, ‘;’, ‘asm’ or ‘__attribute__’ before ‘CppClass’
    

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

    #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");
    #else
        #error The "PRODUCT" is NOT defined!
    #endif
        
        return 0;
    }
    

    3. #line的用法

    • #line用于强制指定新的行号和编译文件名,并对源程序的代码重新编号
    • 用法#line number filename:其中filename可省略
    • #line编译指示字的本质是重新定义__LINE____FILE__

    4. 小结

    • #error用于自定义一条编译错误信息
    • #warning用于自定义一条编译警告信息
    • #error#warning常用于条件编译的情形
    • #line用于强制指定新的行号和编译文件名

    声明:此文章为本人在学习狄泰软件学院《C语言深度解析》所做的笔记,文章中包含狄泰软件资料内容一切版权归狄泰软件所有!

    相关文章

      网友评论

          本文标题:23_#error和#line使用分析

          本文链接:https://www.haomeiwen.com/subject/yyyjfftx.html