使用boost :: asio的以下代码将无法编译:
#ifndef _SERVER_H_
#define _SERVER_H_
#include "Connection.h"
class Server
{
public:
Server(boost::asio::io_service& io_service);
private:
void start_accept();
void handle_accept(Connection::pointer new_connection,const boost::system::error_code& error);
boost::asio::ip::tcp::acceptor acceptor_;
};
#endif
-------------------------------------------------------------------------------------------------
#include "Server.h"
Server::Server(boost::asio::io_service& io_service)
: acceptor_(io_service, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9985)){
start_accept();
}
void Server::start_accept(){
Connection::pointer new_connection =
Connection::create(acceptor_.io_service());
acceptor_.async_accept(new_connection->socket(),
boost::bind(&Server::handle_accept, this, new_connection,
boost::asio::placeholders::error));
}
void Server::handle_accept(Connection::pointer new_connection,const boost::system::error_code& error){
if (!error)
{
new_connection->start();
start_accept();
}
}
--------------------------------------------------------------------------------------------------
#include <Server.h>
#include <iostream>
int main()
{
try
{
boost::asio::io_service io_service;
Server server1(io_service);
io_service.run();
}
catch (std::exception& …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建我自己的Vector2D类,类似于XNA的类,以存储坐标.按照此处的构造函数示例,我创建了下面的代码.但是,我得到一个错误,说没有与参数列表匹配的构造函数"Vector2D :: Vector2D"的实例.我不知道那是怎么回事......似乎是我的问题?
struct Vector2D {
Vector2D(int *varX, int *varY);
~Vector2D();
private: int *X, *Y;
};
Vector2D::Vector2D(int *varX, int *varY) {
X = varX;
Y = varY;
}
Vector2D::~Vector2D() {
free(X);
free(Y);
}
Run Code Online (Sandbox Code Playgroud) 在Visual C++ 2010中,在编译以下代码时,我收到错误消息:
static_cast error C2057:预期的常量表达式.
那有什么不对?
struct A {};
struct B : A {};
struct XX
{
static const int offset = (long)static_cast<A*>((B*)0x8) - 0x8;
};
Run Code Online (Sandbox Code Playgroud)
感谢AProgrammer,以下内容对于VC 2010是正确的:
struct A {};
struct B : A {};
struct XX
{
static const int offset;
};
const int XX::offset
= (long)static_cast<A const*>((B const*)0x8) - 0x8;
Run Code Online (Sandbox Code Playgroud) 假设你有一段代码如下:
resource = allocateResource();
try { /* dangerous code here */ }
finally { free(resource); }
Run Code Online (Sandbox Code Playgroud)
我在这里没有提到任何特定的语言,但我猜Java,C#和C++就是很好的例子(假设你在MSVC++中使用__try/ __finally).
就个人而言,我不认为这是异常安全的,因为如果在进入try块之前有异常怎么办?那你的资源就会泄漏.
不过,我已经看过很多次了,我觉得我错过了什么......是吗?或者这真的不安全吗?
我不是要求allocateResource抛出异常,而是在该函数返回之后但在 resource分配之前得到异常的情况.
我在上一个项目中主要使用gcc,今天我决定对不同编译器的结果进行基准测试.
我使用了与Visual Studio 2010和英特尔C++相同的gcc 4.5,MSVC源代码.该程序从文本文件中获取输入,进行大量字符串操作并将输出写入另一个文本文件.
我只计算时间o
编辑:基准测试:
我只计算执行算法的时间,而不是文件io.基本上我放了
Run Code Online (Sandbox Code Playgroud)
在功能的开头和
clock_t clock0;
double z;
clock0 = clock();
之后.
double clock1=(clock() - clock0) / (double) CLOCKS_PER_SEC;
它从一个小文件(大约200行)开始,几乎没有差异(大约<0.15秒).使用4K行文件,MSVC的输出工作时间为1.23秒,而gcc的输出为0.1.
最后我测试了60K行文件:
Run Code Online (Sandbox Code Playgroud)
(program compiled with ) Intel compiler ran for 6.7 sec and with gcc : 1 sec.
现在我只是想知道为什么会有这样的差异(没有优化标志)以及可能是什么原因.(我使用c ++ 0x标准 - 但显然英特尔编译器支持它.)我不确定是否有这样的事实我的代码只用一个编译器编译成快速二进制文件并不令人担忧
编辑2:
我没有在MSVC或Intel的调试模式下编译它
当我执行以下代码时,它失败,错误代码为317.怎么解决这个问题?我们正在为项目使用Unicode字符集
char* pszMessgeBuffer = NULL;
FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER |
FORMAT_MESSAGE_FROM_SYSTEM |
FORMAT_MESSAGE_IGNORE_INSERTS,
NULL,
dwErrorId,
0, // Default language
(LPTSTR) &pszMessgeBuffer,
0,
NULL )
Run Code Online (Sandbox Code Playgroud) 我已经搜索了所有内容,但是我找不到使用VS C++ 2008的源代码,
您是否有办法以编程方式查找目录中的文件列表?
我在Windows上使用VS 2008 C++.
如何将unsigned long转换为String ^?
我试过了
String ^ mystring = marshal_as<String ^>(myunsignedlong)
Run Code Online (Sandbox Code Playgroud)
但它不起作用!
我的项目中有3个班级(当然是名字A,B然后C).A是抽象的.它们具有以下关系:
A是基类的B
B基类C
在里面C,我宣布一个变量vector<A*> member_vector;.这导致以下问题:
C3699 ::
'*'不能在'A'
C4368 类型上使用此间接:无法定义'member_vector'为托管成员'C':不支持混合类型.
你有没有发现这个错误的线索?我认为循环类的使用可能存在问题,但是,如何克服它呢?
我写了这段代码在对话框中绘制一个简单的矩形,我还在我的消息映射中添加了ON_WM_PAINT().但它没有显示任何对话给我!如果有人能在代码中告诉我的错误,我真的很感激:
void Ctest4Dlg::OnPaint()
{
if (IsIconic())
{
CPaintDC dc(this); // device context for painting
// TODO: Add your message handler code here
SendMessage(WM_ICONERASEBKGND, reinterpret_cast<WPARAM>(dc.GetSafeHdc()), 0);
// Center icon in client rectangle
int cxIcon = GetSystemMetrics(SM_CXICON);
int cyIcon = GetSystemMetrics(SM_CYICON);
CRect rect;
GetClientRect(&rect);
int x = 2;
int y = 2;
// Draw the icon
dc.DrawIcon(x, y, m_hIcon);
//I want to draw a rectangle
dc.Rectangle(10,10,50,50);
}
else
{
CDialogEx::OnPaint();
}
}
Run Code Online (Sandbox Code Playgroud) visual-c++ ×10
c++ ×6
c++-cli ×2
boost ×1
boost-asio ×1
c# ×1
gcc ×1
inheritance ×1
intel ×1
java ×1
linker ×1
mfc ×1
windows-ce ×1