Originally Posted by
zahid990170
Code:
#define EXISTS(T, a, n, val) do {\
char ret=0;\
T *a_ = (a);\
size_t n_ = (n);\
for (; n_ > 0; --n_, ++a_){\
ret = (*a_ == val);\
}\
} while(0)
How can I get the result from this macro.
thanks,
Pass in another parameter ret which will capture the result. Example:
Code:
#define EXISTS(ret, T, a, n, val) do {\
ret = false;\
T *a_ = (a);\
size_t n_ = (n);\
for (; n_ > 0; --n_, ++a_){\
if (*a_ == val) {\
ret = true;\
break;\
}\
}\
} while(0)
#define NELEM(arr) (sizeof(arr) / sizeof(arr[0]))
int main()
{
int a[] = {10,40,70,80,100,200};
bool ret;
EXISTS(ret, int, a, NELEM(a), 100);
if (ret) {
printf("yes\n");
} else {
printf("no\n");
}
}