Difference between revisions of "Studio:Can an array be cast to a pointer?"
m (Text replace - 'Category:Pointers' to 'Category:Studio:Pointers') |
|||
(3 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
No. You cannot cast an array to a pointer type. Because there are subtle differences between them, they are not always interchangeable in SCL like they are in C. | No. You cannot cast an array to a pointer type. Because there are subtle differences between them, they are not always interchangeable in SCL like they are in C. | ||
− | Instead of using the following:< | + | Instead of using the following: |
− | + | <source lang="c"> | |
− | + | INT vr_get_foo(INT entry, INT index, file_table_t * out_buffer) | |
− | + | typedef struct | |
− | + | { | |
− | + | register ringer_types_t ringer_type; | |
− | + | BYTE alias_filename[(MAX_RINGER_ALIAS_NAME_LEN+1) *2]; | |
− | + | UINT16 pad; | |
− | + | }ringer_file_table_t; | |
− | + | #pragma scl_function(v_get_mmedia_ringer) | |
+ | #pragma scl_ptr(vr_get_mmedia_ringer, out_buffer, "OUT", PRIVATE) | ||
+ | </source> | ||
− | Use this SCL instead:< | + | Use this SCL instead: |
− | + | <source lang="c"> | |
− | + | #pragma scl_function(vr_get_mmedia_ringer) | |
− | + | #pragma scl_ptr(vr_get_get_mmedia_ringer, out_buffer, "OUT", PRIVATE) | |
+ | #pragma scl_string(ringer_file_table_t, alias_filename, (MAX_RINGER_ALIAS_NAME_LEN+1) * 2) | ||
+ | </source> | ||
− | [[Category:Pointers]] | + | [[Category:Studio:Pointers]] |
Latest revision as of 18:41, 20 August 2009
No. You cannot cast an array to a pointer type. Because there are subtle differences between them, they are not always interchangeable in SCL like they are in C.
Instead of using the following:
INT vr_get_foo(INT entry, INT index, file_table_t * out_buffer)
typedef struct
{
register ringer_types_t ringer_type;
BYTE alias_filename[(MAX_RINGER_ALIAS_NAME_LEN+1) *2];
UINT16 pad;
}ringer_file_table_t;
#pragma scl_function(v_get_mmedia_ringer)
#pragma scl_ptr(vr_get_mmedia_ringer, out_buffer, "OUT", PRIVATE)
Use this SCL instead:
#pragma scl_function(vr_get_mmedia_ringer)
#pragma scl_ptr(vr_get_get_mmedia_ringer, out_buffer, "OUT", PRIVATE)
#pragma scl_string(ringer_file_table_t, alias_filename, (MAX_RINGER_ALIAS_NAME_LEN+1) * 2)