Tag: 下标

用于迭代像数组一样的struct成员的C方法?

假设我有一个矢量类: typedef struct vec3_s { float x, y, z; } vec3; 但是,我希望能够迭代它而不将其转换为浮点数组。 虽然在这种情况下演员阵容是可以接受的,但我很想知道在C ++中是否有任何类似function的东西在C语言中是可行的。例如,在C ++中,因为std::vector具有subscript []运算符重载,我可以将其第一个索引的地址传递给一个带void*的函数void* 。 即 void do_something_with_pointer_to_mem( void* mem ) { // do stuff } int main( void ) { std::vector v; // fill v with values here // pass to do_something_with_pointer_to_mem do_some_with_pointer_to_mem( &v[ 0 ] ); return; } 另一个更具体的例子是在OpenGL中使用glBufferData(…)时(使用C ++时): glBufferData( […]

字符数组下标警告

当我使用char数组下标时,如下例所示: int main(){ char pos=0; int array[100]={}; for(pos=0;pos<100;pos++) printf("%i\n", array[pos]); return 0; } 我收到警告,我正在使用char数组下标: 警告:数组下标的类型为’char'[-Wchar-subscripts] 哪个好,因为我启用了此警告。 GCC手册说: -Wchar-subscripts如果数组下标的类型为“char”,则发出警告。 这是错误的常见原因,因为程序员经常忘记这种类型是在某些机器上签名的。 -Wall启用此警告。 因此,此警告应防止使用负数组索引。 我的问题是,为什么这个警告只在char上激活而在其他签名类型上也没有? 谢谢。