c - Marco 函数错误预期声明说明符或 '...' 之前的 '{' 标记

标签 c macros

我尝试使用宏编写这个函数

unsigned int put_0_right(unsigned int value, int order)
    {
        int i;
        for(i=0; i<order; i++)
            value=clear_bit(value,i);
        return value;
    }

所以我写了这个

#define unsigned int mettre_0_droite(value, order)(\
                            {\
                            int i=0;\
                            for(i=0; i<order; i++)\
                                {value=clear_bit(value,i);}\
                            return value;\
                            })

但我收到此错误预期声明说明符或“{”标记之前的“...”

最佳答案

任务可能是做这样的事情。

#define mettre_0_droite(value, order) ((value) & (~((1ul << ((order) + 1)) - 1)))

代替循环

如果您不理解函数和宏之间的区别,您需要一本好的 C 书。

关于c - Marco 函数错误预期声明说明符或 '...' 之前的 '{' 标记,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50566885/

相关文章:

C 编程检查缓冲区中的消息

C宏根据类型使用参数

c++ - 尝试使 C++ (MFC) 代码片段易于重用。有什么选择?

c++ - 在宏中将字符串附加到 __FUNCTION__

visual-studio-2008 - 禁用 VS 2008 宏

c++ - C++14/17 仍然不可避免地使用哪些类型的宏?

c - 在c中分配大型指针数组(9mb)

c - Ntp 服务器没有响应我的客户端

php - 如何将数组作为对象属性添加到 PHP 扩展中声明的类中?

c - 使用 pthread 的简单死锁示例