c/c++语言开发共享_LINE__在内联函数中的行为

我有一个宏将行号和文件名传递给error handling程序:

#define SYSTEM_FAILURE (error_code, comment)  System_Failure((error_code), (comment), __LINE__, __FILE__); 

在内联函数中使用时,如何解析__LINE__

 file.h: inline int divide(int x, int y) { if (y == 0) { SYSTEM_FAILURE(ENUM_DIVIDE_BY_ZERO, "divide by zero error"); } return x/y; } 

__LINE__包含头文件中的行号,或者调用内联函数的源文件的行号(假设编译器在源代码中执行“粘贴”)?

    在C和C ++中,宏(大多数情况下)不是用实际代码的任何知识进行评估,而是在代码之前处理(因此称为“预处理器”)。 因此, __FILE__将计算为“file.h”,并且__LINE__将计算为与file.h中出现SYSTEM_FAILURE的行对应的行号。

    由于宏在编译之前被其定义替换,因此__LINE__将包含您在其中使用宏的文件的实际行。 内联不会影响这种行为。

    __LINE__将是头文件的行,因为预处理器将在编译器看到它之前对其进行评估。

      以上就是c/c++开发分享_LINE__在内联函数中的行为相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注计算机技术网(www.ctvol.com)!)。

      本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。

      ctvol管理联系方式QQ:251552304

      本文章地址:https://www.ctvol.com/c-cdevelopment/560809.html

      (0)
      上一篇 2021年1月28日
      下一篇 2021年1月28日

      精彩推荐