patterncMinor
Casting const pointer to non-const pointer when using struct iovec
Viewed 0 times
structiovecnonconstcastingpointerusingwhen
Problem
struct iovec is defined in ` by the following way:
/* Structure for scatter/gather I/O. */
struct iovec
{
void *iov_base; /* Pointer to data. */
size_t iov_len; /* Length of data. */
};
Now I do ugly casting from const void to void:
int send_frame_once( int fd, const struct iovec* iov, size_t iovlen );
int send_frame( int fd, const void* buffer, size_t len )
{
struct iovec iov;
iov.iov_base = (void*)buffer; /* const iov cast */
iov.iov_len = len;
return send_frame_once( fd, &iov, 1 );
}
Is that necessary kludge?
Or should I remove const keyword from declaration of send_frame` function. Like this:int send_frame( int fd, void* buffer, size_t len )Solution
I think you should keep it.
const is not only meant for the compiler, but also for anybody reading your code. Even with the void* cast, you're still saying to readers "Trust me, I'm not touching your buffer!" and this is a valuable information that should not be discarded.Context
StackExchange Code Review Q#9547, answer score: 7
Revisions (0)
No revisions yet.