我需要一个简单c结构的帮助,但无法找到它为什么不编译使用gcc(opensuse 11.4)
我有这个代码:
struct Image {
int w;
int h;
// other code
};
Run Code Online (Sandbox Code Playgroud)
在同一个文件中,我有另一个结构数组,如下所示:
struct ShapeImage
{
Image image[10];
// other code
};
Run Code Online (Sandbox Code Playgroud)
当我编译时,我得到:
syntax error before [' token`
Run Code Online (Sandbox Code Playgroud)
为什么我收到此错误如果指定图像中的数字10 image[10];看起来对我好,有什么问题?
假设我有一个服务器应用程序 - 使用UNIX套接字通过TCP连接.
连接是异步的 - 换句话说,客户端和服务器的套接字是非阻塞的.
假设以下情况:在某些情况下,服务器可能决定将某些数据发送到连接的客户端并立即关闭连接:使用shutdownwith SHUT_RDWR.
所以,我的问题是 - 是否有保证,当客户端调用时recv,它会收到(由服务器发送)数据?
或者,要接收数据,recv必须在服务器之前调用shutdown?如果是这样,我应该做什么(或者,更确切地说,我该怎么做),以确保客户收到数据?
简短版本:我有一个模板函数,它是"通用的",但是我想强制用户显式指定参数的类型,它们作为参数传递给这个函数.
有任何想法吗?
长版:听起来像一个糟糕的设计,但这是我的情况,我现在想不出更好的东西.
我试图::setsockopt在一个小类中"实现" socket(我不想拥有大量的函数,采用不同的参数并做同样的事情).例如:
template< typename OPTION_VALUE_TYPE >
bool set_option( int level, int option_name, const OPTION_VALUE_TYPE& value )
{
return -1 != ::setsockopt( fd_, level, option_name, &value, sizeof( value ) );
}
Run Code Online (Sandbox Code Playgroud)
但是,这可能会导致以下情况-调用set_option带1,试图设置unsigned char选项将导致失败,因为1是int.正确的用法是:
set_option< unsigned char >( level, option, 1 );
Run Code Online (Sandbox Code Playgroud)
如
set_option( level, option, 1 );
Run Code Online (Sandbox Code Playgroud)
将完全编译,但将是非常错误的.
为什么以下打印2?
list<int> l;
l.push_back( 1 );
l.push_back( 2 );
l.push_back( 3 );
list<int>::iterator i = l.begin();
i++;
l.erase( i );
cout << *i;
Run Code Online (Sandbox Code Playgroud)
我知道什么erase回归,但我想知道为什么这样可以?或者它是未定义的,还是依赖于编译器?
我正在构建一个我需要在移动中工作的应用程序,我可以访问许多PC,我没有管理员权限来安装软件.
我使用C#所以我希望有一个C#的可移植版本或任何其他等待在任何其他PC上编译我的应用程序...
此外,如果有一个C++编译器,它会很棒.
谁能告诉我std::cerr和之间的用法区别是什么perror
void perror ( const char * str );
Run Code Online (Sandbox Code Playgroud)
我想知道在 C++ 应用程序中哪一个更可取,为什么它更可取。
我正在读一本书,它说有初始化和赋值为内置型没有区别C或C++,但喜欢的类型string中C++,也有区别.为什么?为什么内置类型没有区别C?
我正在开发一个程序,它使用多个std::ifstreams来读取二进制文件,std::ifstream每个线程一个.现在我需要知道,如果std::ofstream在Windows和Linux上是线程安全的,那么在同一个文件中写入.我只使用一个std::ofstream并使用多个线程.
我读通过利用每个线程和写作使用的输出文件的块不同的块seekp()和write().目前它对我有用,但它是否对大文件有问题.
是std::ofstream线程安全的?
是否可以告诉 Visual Studio(或任何其他工具,甚至在任何其他主要操作系统上)将地址解释为调用堆栈的开头?
我想要实现的目标:我们有一个库,它使用boost's make_fcontext/jump_fcontext并将这些上下文存储到容器中,以便暂停一些调用以供以后处理。
我的问题是 - 是否可以以某种方式调试这些挂起的调用是什么?我想,我可以告诉调试器/工具:“这是这个地址,虽然它不明显,但它实际上指向一个调用堆栈,‘解析’它并像标准调用堆栈一样向我显示它”。
不知道理论上是否可行,因为我不知道boost::context细节,但听起来是可以实现的。
有人尝试过解决这个问题吗?