gpt4 book ai didi

c++ - 如何将函数结果设置为 C++ MACRO

转载 作者:行者123 更新时间:2023-11-28 03:11:12 24 4
gpt4 key购买 nike

我在设置 C++ MACRO 单调函数结果时遇到问题。这就是我所拥有的:

#define CCDICT_FOREACH(__dict__, __el__) \
CCDictElement* pTmp##__dict__##__el__ = NULL; \
if (__dict__) \
HASH_ITER(hh, (__dict__)->m_pElements, __el__, pTmp##__dict__##__el__)

这就是我尝试设置它的方式:

CCDictElement* pElement = NULL;
CCDICT_FOREACH(GameSingleTone::getInstance()->getGemsDictionary(), pElement)
{
}

方法 getGemsDictionary() 返回给我: CCDictionary*,gemsDictionary;

我得到的编译错误是(在 MACRO 行):

error C2143: syntax error : missing ';' before '{'

但如果我这样做:

CCDictionary* tempDictionary = CCDictionary::create();
tempDictionary = GameSingleTone::getInstance()->getGemsDictionary();
CCDICT_FOREACH(tempDictionary , pElement)
{
}

一切正常。
为什么?

最佳答案

宏只是进行文本替换。所以当你这样做时:

CCDICT_FOREACH(GameSingleTone::getInstance()->getGemsDictionary(), pElement)

这一行:

CCDictElement* pTmp##__dict__##__el__ = NULL; \

变成这样:

CCDictElement* pTmpGameSingleTone::getInstance()->getGemsDictionary()pElement = NULL;

这完全是胡说八道。另一方面:

CCDICT_FOREACH(tempDictionary , pElement)

翻译成这样:

CCDictElement* pTmptempDictionarypElement = NULL;

这完全没问题。

关于c++ - 如何将函数结果设置为 C++ MACRO,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18429315/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com