我正在尝试定义一个宏来在我的全局范围内生成一个结构,如上面的代码:
#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) 我想注册一个自定义的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)