Studio:Can an array be cast to a pointer?: Difference between revisions

From STRIDE Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
Line 16: Line 16:
  #pragma scl_ptr(vr_get_get_mmedia_ringer, out_buffer, OUT, PRIVATE)<br>
  #pragma scl_ptr(vr_get_get_mmedia_ringer, out_buffer, OUT, PRIVATE)<br>
  #pragma scl_string(ringer_file_table_t, alias_filename, (MAX_RINGER_ALIAS_NAME_LEN+1) * 2)</tt>
  #pragma scl_string(ringer_file_table_t, alias_filename, (MAX_RINGER_ALIAS_NAME_LEN+1) * 2)</tt>
[[Category:Application Notes]]

Revision as of 18:04, 5 February 2008

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)