小编yli*_*ima的帖子

我可以在C中执行类似#define ARRAY(size)char [## size ##]的操作吗?

我正在尝试定义一个宏来在我的全局范围内生成一个结构,如上面的代码:

#define BUFFER(size) \
struct { \
    unsigned short size = ##size; \
    unsigned short readIndex = 0; \
    unsigned short writeIndex = 0; \
    unsigned char dataPtr[##size##]; \
}

BUFFER(10) buffer10bytes;
BUFFER(50) buffer50bytes;
Run Code Online (Sandbox Code Playgroud)

问题是显然gcc没有评估这个宏.存档是否可能?怎么样?

这是我的编译器错误:

In file included from ../usart.c:12:0:
../usart.c:14:8: error: expected identifier or '(' before numeric constant
 BUFFER(10) buffer10bytes;
        ^
../buff.h:24:17: note: in definition of macro 'BUFFER'
  unsigned short size = ##size; \
                 ^
../buff.h:24:22: error: pasting "=" and "10" does not give a valid preprocessing token …
Run Code Online (Sandbox Code Playgroud)

c gcc avr avr-gcc

4
推荐指数
1
解决办法
342
查看次数

如何在Grails中实现自定义深度ObjectMarshaller <JSON>?

我想注册一个自定义的JSON编组使用Spring的ObjectMarshallerRegisterer所描述的豆这里.

我的目的是在编组过程中大写所有实现某个接口的类的每个属性名称.

到目前为止,我已经实现了这个注册为对象marshaller的类:

import grails.converters.JSON

import org.codehaus.groovy.grails.web.converters.exceptions.ConverterException;
import org.codehaus.groovy.grails.web.converters.marshaller.ObjectMarshaller;

class MyMarshaller implements ObjectMarshaller<JSON> {

    @Override
    boolean supports(Object object) {
        object instanceof MyInterface
    }

    @Override
    void marshalObject(Object object, JSON json)
            throws ConverterException {
        def jsonWriter = json.writer

        jsonWriter.object()
        object.class.metaClass.properties.each {
            jsonWriter.key(it.name.capitalize())
            def value = object."${it.name}"
            if(value == null || value instanceof Boolean ||
                    value instanceof Number || value instanceof String) {
                jsonWriter.value(value)
            } else {
                // TODO: Fix this
                jsonWriter.value(JSON.parse((value as JSON).toString()))
            }
        }
        jsonWriter.endObject()
    }
} …
Run Code Online (Sandbox Code Playgroud)

grails groovy json marshalling

2
推荐指数
1
解决办法
439
查看次数

标签 统计

avr ×1

avr-gcc ×1

c ×1

gcc ×1

grails ×1

groovy ×1

json ×1

marshalling ×1