---
title: ReportInnerErrMsg
description: "用于上报CANN预定义好的内部错误信息，同时也会上报调用处的一些信息，如文件名、函数名以及行号。"
url: https://www.hiascend.com/document/detail/zh/canncommercial/latest/API/runtimeapi/cann_base_api_0004.html
sourcePath: /source/zh/canncommercial/900/API/runtimeapi/cann_base_api_0004.html
indexId: 36be0627edbf995ebe42a81261c358bbe94ade7c51e85dfbc49c1db448c8cf4968
---
# ReportInnerErrMsg

#### 函数功能

用于上报CANN预定义好的内部错误信息，同时也会上报调用处的一些信息，如文件名、函数名以及行号。

当使用该接口时，如果用户提供的格式化字符串长度超过1024（包括末尾的\0），接口将返回错误码-1，表示失败。例如，如果格式化字符串为“Error:%s”，且传入的字符串长度为1000，加上“Error:”和末尾的“\0”，总长度为1007，接口调用成功。然而，如果传入的字符串长度为1020，加上“Error:”和末尾的“\0”，总长度变为1027，超过1024，接口调用失败。


#### 函数原型

```
int32_t ReportInnerErrMsg(const char_t *file_name, const char_t *func, uint32_t line, const char *error_code, const char_t *format, ...)
```

针对该接口，还提供了封装该接口的宏REPORT_INNER_ERR_MSG，宏定义如下：

```
#define REPORT_INNER_ERR_MSG(error_code, format, ...) \
(void)ge::ReportInnerErrMsg(__FILE__, __FUNCTION__, __LINE__, (error_code), (format), ##__VA_ARGS__)
```


#### 参数说明

| 参数名 | 输入/输出 | 说明 |
| --- | --- | --- |
| file\_name | 输入 | 文件名，表示用户在哪个文件中调用ReportInnerErrMsg接口，固定配置为\_\_FILE\_\_。 |
| func | 输入 | 函数名，表示用户在哪个函数中调用ReportInnerErrMsg接口，固定配置为\_\_FUNCTION\_\_。 |
| line | 输入 | 行号，表示用户在哪一行中调用ReportInnerErrMsg接口，固定配置为\_\_LINE\_\_。 |
| error\_code | 输入 | CANN预定义好的内部错误。 错误码以6位字符形式体现，例如E19999，其中，第1位表示级别，分为E、W、I，分别表示错误、告警、提示类；第2位表示模块；后4位表示错误码，9000~9999为内部错误码。 |
| format | 输入 | 错误信息。 在调用格式化函数时，format中参数的类型、个数必须与实际参数类型、个数保持一致。 |
| ... | 输入 | format中的可变参数，根据错误信息添加。 |


#### 返回值

无
