CHECK_NOTNULL template

本文介绍了一种在C++中进行空指针检查的方法,通过定义宏和模板函数实现,确保程序健壮性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>
using namespace std;

#define CHECK_NOTNULL(val) \
    CheckNotNull(__FILE__, __LINE__, "'" #val "' Must be non NULL", (val))

template <typename T>
T* CheckNotNull(const char* file, int line, const char *names, T* ptr)
{
    if (ptr == NULL)
    {
        cout << names << endl;
    }
    return ptr;
}

int main(){
    int *p=NULL;
    int *q=CHECK_NOTNULL(p);
    CHECK_NOTNULL(q);
    return 0;
}

mysql5.5命令行安装winERR] CREATE TABLE `edoc_obj_team_member` ( `ID` bigint(20) NULL, `TEAM_TYPE` varchar(16) NULL, `TEAM_ID` bigint(20) NULL, `MEMBER_ID` bigint(20) NULL, `SORT_NUM` decimal(3) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_opinion` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `AFFAIR_ID` bigint(20) NULL, `ATTRIBUTE` int(11) NULL, `OPINION_TYPE` int(11) NULL, `CONTENT` longtext NULL, `IS_HIDDEN` decimal(3) NULL, `CREATE_USER_ID` decimal(19) NULL, `CREATE_TIME` datetime NULL, `POLICY` varchar(255) NULL, `PROXY_NAME` varchar(255) NULL, `NODE_ID` decimal(19) NULL, `STATE` smallint(6) NULL, `SUB_EDOC_ID` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `SUB_OPINION_ID` bigint(20) NULL, `DEPARTMENT_NAME` varchar(500) NULL, `ACCOUNT_NAME` varchar(500) NULL, `DEPARTMENT_SORT_ID` int(11) NULL, `SOURCE_SUMMARY_ID` bigint(20) NULL, `POST_INFO` varchar(100) NULL, `MEMBER_SORT_ID` int(11) NULL, `LEVEL_SORT_ID` int(11) NULL, `ORG_ACCOUNT_SORT_ID` int(11) NULL, `TYPE` int(11) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register` ( `ID` bigint(20) NULL, `IDENTIFIER` varchar(100) NULL, `RECIEVE_ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `EDOC_TYPE` decimal(3) NULL, `REGISTER_TYPE` decimal(3) NULL, `CREATE_USER_ID` bigint(20) NULL, `CREATE_USER_NAME` varchar(255) NULL, `CREATE_TIME` datetime NULL, `UPDATE_TIME` datetime NULL, `SEND_UNIT` longtext NULL, `SEND_UNIT_ID` bigint(20) NULL, `SEND_UNIT_TYPE` decimal(3) NULL, `EDOC_UNIT` longtext NULL, `EDOC_UNIT_ID` longtext NULL, `EDOC_DATE` datetime NULL, `REGISTER_USER_ID` bigint(20) NULL, `REGISTER_USER_NAME` varchar(255) NULL, `REGISTER_DATE` datetime NULL, `ISSUER_ID` bigint(20) NULL, `ISSUER` varchar(255) NULL, `ISSUE_DATE` datetime NULL, `SIGNER` varchar(255) NULL, `DISTRIBUTER_ID` bigint(20) NULL, `DISTRIBUTER` varchar(255) NULL, `DISTRIBUTE_DATE` datetime NULL, `DISTRIBUTE_STATE` decimal(3) NULL, `DISTRIBUTE_EDOC_ID` bigint(20) NULL, `SUBJECT` varchar(1024) NULL, `DOC_TYPE` varchar(255) NULL, `SEND_TYPE` varchar(255) NULL, `DOC_MARK` varchar(255) NULL, `SERIAL_NO` varchar(255) NULL, `SECRET_LEVEL` varchar(255) NULL, `URGENT_LEVEL` varchar(255) NULL, `KEEP_PERIOD` varchar(255) NULL, `SEND_TO` longtext NULL, `SEND_TO_ID` longtext NULL, `COPY_TO` longtext NULL, `COPY_TO_ID` longtext NULL, `KEYWORDS` varchar(255) NULL, `COPIES` decimal(10, 2) NULL, `NOTE_APPEND` varchar(1024) NULL, `ATT_NOTE` varchar(1024) NULL, `STATE` decimal(3) NULL, `ORG_ACCOUNT_ID` bigint(20) NULL, `REC_TIME` datetime NULL, `IS_RETREAT` decimal(3) NULL, `AUTO_REGISTER` smallint(6) NULL, `RECIEVE_USER_ID` bigint(20) NULL, `RECIEVE_USER_NAME` varchar(100) NULL, `EXCHANGE_MODE` smallint(6) NULL, `UNIT_LEVEL` varchar(255) NULL, `EXCHANGE_SEND_TIME` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register_body` ( `ID` bigint(20) NULL, `CONTENT_TYPE` varchar(20) NULL, `CONTENT` longtext NULL, `REGISTER_ID` bigint(20) NULL, `CONTENT_NO` decimal(3) NULL, `CREATE_TIME` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_register_condition` ( `ID` bigint(20) NULL, `TITLE` varchar(255) NULL, `USER_ID` bigint(20) NULL, `ACCOUNT_ID` bigint(20) NULL, `CREATE_TIME` datetime NULL, `START_TIME` varchar(50) NULL, `END_TIME` varchar(50) NULL, `TYPE` smallint(6) NULL, `QUERY_COL` varchar(255) NULL, `CONTENT_EXT1` varchar(4000) NULL, `CONTENT_EXT2` varchar(255) NULL, `CONTENT_EXT3` varchar(255) NULL, `SEND_QUERY_TIME_TYPE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_sendform_file_relation` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `FILE_ID` bigint(20) NULL, `FILE_TYPE` varchar(20) NULL, `SIGN_STRING` longtext NULL, `OPINIONS` longtext NULL ) ENGINE='InnoDB'; CREATE TABLE `edoc_stat` ( `ID` bigint(20) NULL, `EDOC_ID` bigint(20) NULL, `EDOC_TYPE` decimal(3) NULL, `SUBJECT` varchar(1024) NULL, `DOC_TYPE` varchar(50) NULL, `DOC_MARK` varchar(255) NULL, `DEPT_ID` bigint(20) NUL [ERR] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(6) NULL, `UNITID` bigint(20) NULL, `EDOCXSNID` bigint(20) NULL ) ENGINE='In' at line 5 [ERR] CREATE TABLE `portal_space_page` ( `ID` bigint(20) NULL, `PATH` varchar(255) NULL, `PARENT_ID` bigint(20) NULL, `PAGE_TYPE` smallint(6) NULL, `PAGE_NAME` varchar(500) NULL, `HIDDEN` int(11) NULL, `SKIN` varchar(80) NULL, `DEFAULT_LAYOUT_DECORATOR` varchar(80) NULL, `CANSHARE` smallint(6) NULL, `CANMANAGE` smallint(6) NULL, `CANPUSH` smallint(6) NULL, `CANPERSONAL` smallint(6) NULL, `SORT` int(11) NULL, `CREATOR` bigint(20) NULL, `CREATE_TIME` datetime NULL, `UPDATOR` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `CANUSEMENU` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_space_security` ( `ID` bigint(20) NULL, `SPACE_ID` bigint(20) NULL, `ENTITY_TYPE` varchar(20) NULL, `ENTITY_ID` bigint(20) NULL, `SORT` int(11) NULL, `SECURITY_TYPE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_space_sort` ( `ID` bigint(20) NULL, `MEMBER_ID` bigint(20) NULL, `SPACE_ID` varchar(255) NULL, `SORT` int(11) NULL, `TYPE` smallint(6) NULL, `ACCOUNT_ID` bigint(20) NULL, `DELETED` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_sysmenu_order` ( `ID` bigint(20) NULL, `MENUID` bigint(20) NULL, `ORDERID` int(11) NULL, `CREATETIME` datetime NULL, `UPDATETIME` datetime NULL, `CREATERID` bigint(20) NULL, `UPDATERID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template` ( `ID` bigint(20) NULL, `NAME` varchar(1024) NULL, `PATH` varchar(1024) NULL, `THUMBNAIL` varchar(1024) NULL, `PRESET` smallint(6) NULL, `DESCRIPTION` varchar(4000) NULL, `UPDATE_USER` bigint(20) NULL, `UPDATE_TIME` datetime NULL, `SORT` int(11) NULL, `CDEFAULT` smallint(6) NULL, `LAYOUT` varchar(100) NULL, `LAYOUTNAME` varchar(200) NULL, `STYLECODE` varchar(100) NULL, `CSSPATH` varchar(1024) NULL, `JSPATH` varchar(1024) NULL, `T_TYPE` smallint(6) NULL, `SCSS_FILE_ID` bigint(20) NULL, `VALUE_SCSS_FILE_ID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_acl` ( `ID` bigint(20) NULL, `ENTITY_ID` bigint(20) NULL, `TEMPLATE_ID` bigint(20) NULL, `ENTITY_TYPE` varchar(255) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_choice_control` ( `ID` bigint(20) NULL, `ENTITY_TYPE` varchar(500) NULL, `ENTITY_ID` bigint(20) NULL, `ALLOW_CHOOSE` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_template_setting` ( `ID` bigint(20) NULL, `TEMPLATE_ID` bigint(20) NULL, `TEMPLATE_TYPE` smallint(6) NULL, `ENTITY_TYPE` varchar(50) NULL, `ENTITY_ID` bigint(20) NULL, `CURRENT_ACCOUNTID` bigint(20) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_theme_section_cfg` ( `ID` bigint(20) NULL, `THEME_ID` bigint(20) NULL, `SECTION_ID` varchar(100) NULL, `SECTION_STYLE_ID` varchar(100) NULL, `SECTION_STYLE` varchar(100) NULL, `SECTION_PROPERTIES` longtext NULL, `MEMBER_ID` bigint(20) NULL, `CREATE_DATE` datetime NULL, `SORT_ID` int(11) NULL ) ENGINE='InnoDB'; CREATE TABLE `portal_themes` ( `ID` bigint(20) NULL, `P_CODE` varchar(255) NULL, `P_NAME` varchar(255) NULL, `ACCOUNT_ID` bigint(20) NULL, `SYSINIT` smallint(6) NULL, `PRODUCTID` varchar(255) NULL, `SORT` smallint(6) NULL, `PARENTID` bigint(20) NULL, `PRE_IMG` varchar(500) NULL, `ISDELETE` smallint(6) NULL, `T_TYPE` smallint(6) NULL, `T_CATEGORY` smallint(6) NULL ) ENGINE='InnoDB'; CREATE TABLE `priv_commonauthority` ( `ID` bigint(20) NULL, `RESOURCEID` bigint(20) NULL, `RESOURCE_TYPE` smallint(6) NULL, `USERID` bigint(20) NULL, `USER_TYPE` bigint(20) NULL, `BEGIN_DATE` datetime NULL, `END_DATE` datetime NULL ) ENGINE='InnoDB'; CREATE TABLE `priv_menu` ( `ID` bigint(20) NULL, `NAME` varchar(255) NULL, `ICON` varchar(255) NULL, `TARGET` varchar(255) NULL, `SORTID` smallint(6) NULL, `PLUGINID` bigint(20) NULL, `PATH` varchar(255) NULL, `EXT1` varchar(500) NULL, `EXT2` varchar(500) NULL, `EXT3` varchar(500) NULL, `EXT4` smallint(6) NULL, `EXT5` smallint(6) NULL, `EXT6` smallint(6) NULL, `EXT7` varchar(500) NULL, `EXT8` varchar(500) NULL, `EXT9` va [SQL] Finished with error为什么报错
最新发布
06-30
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值