当前位置:  开发笔记 > 编程语言 > 正文

有没有办法提供单个宏函数来返回不同类型的值,包括什么?

如何解决《有没有办法提供单个宏函数来返回不同类型的值,包括什么?》经验,为你挑选了0个好方法。

我创建了以下宏来锁定互斥锁并返回(从调用此宏的函数),以防尝试锁定失败.目前我已经将它缩小到2个宏 - 一个用于从返回值的函数返回,不管类型如何,另一个用于从返回任何函数的函数返回(即void).

宏之外的代码(下面)仅用于说明,与使用宏的实际生产代码几乎没有关系.

#define MUTEX_LOCK()\
    {\
        if (pthread_mutex_lock(&mutex) != 0)\
        {\
            printf("Failed to lock mutex.\n");\
            return;\
        }\
    }
#define MUTEX_LOCK_RVAL(err_val)\
    {\
        if (pthread_mutex_lock(&mutex) != 0)\
        {\
            printf("Failed to lock mutex.\n");\
            return err_val;\
        }\
    }

void vfunc()
{
    printf("\nIn vfunc()\n");
    MUTEX_LOCK();
    printf("\nOut of vfunc()\n");
}

UINT16 uint16func()
{
    printf("\nIn uint16func()\n");
    MUTEX_LOCK_RVAL(0);
    printf("\nOut of uint16func()\n");

    return 9;
}

CHAR* errstr = "Hoo boy!";
CHAR* strfunc()
{
    printf("\nIn strfunc()\n");
    MUTEX_LOCK_RVAL(errstr);
    printf("\nOut of strfunc()\n");

    return NULL;
}

有没有办法将这些减少到一个宏,可以在返回值和void的函数中使用.

推荐阅读
mobiledu2402852413
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有