我想创建一个宏,它将接受任意代码块作为其参数
FOR_VECTOR( type, vect, code_block ) \
for( vector<type>::iterator i=vect.begin(); i!=vect.end(); ++i ) { \
code_block; \
}
Run Code Online (Sandbox Code Playgroud)
问题是在参数的代码块,其可以包含的任意数量,和 )字符.
有什么好的解决方案吗?
NetworkStream从流类型的TCP套接字读取C#时,BinaryReader.ReadChar偶尔会引发异常System.ArgumentException: The output char buffer is too small to contain the decoded characters, encoding 'Unicode (UTF-8)'
所有缓冲区都有其默认大小(没有一个是手动设置的),并且设置更大的缓冲区大小不会影响该问题。
完全令人沮丧的是:
使用断点并逐步通过ReadCharcall 行时,不会发生异常
如果ReadChar先于该异常,则不会发生该异常Thread.Sleep(1000)(但仍会在较小的超时时发生)
使用BinaryReaderon 时不会发生异常FileStream,在该位置存储了TCP服务器答案的所有精确字节。
那么,从套接字流中缓冲单个字符可能是与时间相关的问题?