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;

}

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

原文地址:https://www.cnblogs.com/free-1122/p/9720720.html