打印行号,类似于__FUNCTION__
时间: 2023-07-02 15:14:40 浏览: 130
要在代码中打印行号,可以使用预定义的宏__LINE__,它返回当前行号的一个整数值。您可以将其与其他文本一起打印,以便在输出中包含行号信息。例如:
```c++
std::cout << "This message is on line " << __LINE__ << std::endl;
```
这将在输出中显示类似于“ This message is on line 10”的信息,其中10是当前行号。请注意,__LINE__在每个源文件中都是唯一的,因此您可以使用它来识别代码中的特定位置。
相关问题
#define mmc_err(info, ...) \ do { \ printf("Info %s,%s,%d:"info"", __FILE__,__FUNCTION__,__LINE__,##__VA_ARGS__); \ } while(0)
这是一个 C 语言中的宏定义,它定义了一个名为 `mmc_err` 的宏,该宏接受一个字符串类型的 `info` 参数和可变参数 `...`。该宏的作用是在控制台上打印一条带有文件名、函数名、行号和参数信息的错误消息。
具体来说,该宏使用了 C 语言中的多行宏定义技巧,即在宏定义的末尾使用了一个 `do-while` 语句。这样可以确保宏定义中的所有语句都被视为一个整体,从而避免了一些潜在的问题。
该宏使用了 `printf()` 函数来打印错误消息。在打印消息时,使用了一些特殊的语法来将文件名、函数名和行号等信息插入到消息中。具体来说,使用了 `__FILE__`、`__FUNCTION__` 和 `__LINE__` 宏来分别获取当前文件名、函数名和行号,并使用了 `%s` 格式化字符串来将这些信息插入到消息中。另外,`##__VA_ARGS__` 用来表示可变参数,它可以将多个参数展开成一个参数列表传递给 `printf()` 函数。
因此,当你调用 `mmc_err()` 宏时,会在控制台上打印一条带有文件名、函数名、行号和参数信息的错误消息。例如,如果你调用了 `mmc_err("Error: %s", "something went wrong")`,那么会打印出类似于以下的错误消息:
```
Info myfile.c,myfunction,42: Error: something went wrong
```
C语言os_kprintf("Assert failed. Condition(%s). [%s][%d]\r\n", #condition, __FUNCTION__, __LINE__);的含义
这是在操作系统中常见的一种断言(assert)机制的实现。当代码执行到该语句时,如果表达式condition的值为假(即0),则会输出一条错误信息,提示出错的位置。具体含义如下:
1. os_kprintf 是在操作系统内核中打印信息的函数,类似于 printf 函数,用于输出调试信息。
2. "Assert failed. Condition(%s). [%s][%d]\r\n" 是输出的错误信息格式,其中 %s 表示字符串格式化,#condition 表示将表达式 condition 转换为字符串输出,__FUNCTION__ 表示当前函数名,__LINE__ 表示当前代码行号。
3. 如果表达式 condition 的值为假,则会输出错误信息,提示 Assert failed. Condition(condition表达式). [函数名][代码行号],其中 condition 表达式会被转换为字符串格式输出,方便定位错误。
该语句通常用于程序员在编写代码时,为了保证程序的正确性,加入一些断言,当条件不满足时,可以及时发现错误并进行调试。
阅读全文