我需要从C返回值sizeof(some_t)
到Java。
JNIEXPORT jint JNICALL blar(blar) {
#ifndef some_t
return ?;
#else
return sizeof(some_t);
#endif
正如您所看到的,我必须为类型为甚至未定义的的情况返回一些值。那么这个案例的最佳价值是什么? 0
或-1
?这就是为什么我在询问是否有任何sizeof
操作在任何非错误情况下返回0
的情况。
答案 0 :(得分:3)
% cat so30681402.c #include <stdio.h> int main(void) { int za[0]; printf("sizeof array with no elements is %d.\n", (int)sizeof za); return 0; } % clang -std=c99 -pedantic -Weverything so30681402.c so30681402.c:4:12: warning: zero size arrays are an extension [-Wzero-length-array] int za[0]; ^ 1 warning generated. % ./a.out sizeof array with no elements is 0. %
答案 1 :(得分:2)
C中的对象始终具有正尺寸,因此sizeof
永远不会导致0
。
C不允许空struct
或union
类型,而且数组的大小必须大于0
。因此,没有正确的C类型可以返回值0
。