小编Gra*_*row的帖子

在Windows和Linux上编译

我是c的新手,我得到了一些其他人在Windows上编写的源代码.

尝试在linux上编译后我有错误,因为linux不支持DWORD,WORD和UINT32.我有6个文件例如.啊,Ac,Bh,Bc,Ch,Cc这些关键字都在所有文件中.

所以我在考虑两种可能的解决方案.哪个更好#define或typedef.

1)

typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
Run Code Online (Sandbox Code Playgroud)

2)

#define DWORD unsigned long 
#define WORD unsigned short 
#define UINT32 unsigned int 
Run Code Online (Sandbox Code Playgroud)

对于第二部分,我想知道我应该把这些声明放在哪里.他们应该进入头文件,还是应该进入源文件?

例如,我应该在头文件或源文件中执行类似的操作吗?

#ifdef WIN32
/* windows stuff */
#else
typedef unsigned long DWORD;
typedef unsigned short WORD;
typedef unsigned int UNINT32;
#endif
Run Code Online (Sandbox Code Playgroud)

非常感谢上述建议,

c

10
推荐指数
1
解决办法
8698
查看次数

如何从快递应用程序获取http.server?

我正在编写一个服务器端node.js应用程序,它使用express来处理HTTP请求,我正在添加websockets(socket.io)支持.但是,我无权访问启动HTTP服务器的代码.我正在编写一个快速路由器和函数来处理各种URL.我的代码看起来像:

var express = require('express');
var router = express.Router();
router.post( myURL, myFunction );
Run Code Online (Sandbox Code Playgroud)

在设置路由器时,我想使用socket.io来监听websocket连接.我无法传递expressexpress()进入require('socket.io')( xxx ),我需要传递http.Server对象.但由于我没有启动服务器,我怎么能得到它?

javascript node.js express socket.io

9
推荐指数
3
解决办法
1万
查看次数

JavaScript中'this'关键字行为的基本原理是什么?

我从语言设计的角度来问这个问题.所以我试图找出答案

  1. 这种行为的理由是this什么?
  2. 这种行为在何种程度上this是错误的,或者可以改进?

为了澄清我为什么不安this,请考虑这个例子:

var a = {};
a.f = function(){ return this; }
var f = a.f;
// f() != a.f()
Run Code Online (Sandbox Code Playgroud)

请注意遗留的对象f()是多么容易丢失:与之分离a,this成为全局对象(window对于浏览器).

现在考虑:

var newA = function(){
    var self = {};
    self.f = function(){ return self; }
    return self;
}

var a = newA();
var f = a.f;
// f() == a.f() !
Run Code Online (Sandbox Code Playgroud)

this在完全不使用的情况下,无论方法在何处或如何使用,我们都能够建立和维护对象上下文.我不禁想到,凭借封闭所提供的力量,this变得多余,甚至可能有点危险......

我不是在反对某些仇杀this,或者想要开始争论; 我只是想更好地理解它.我确实理解"这个"可能很有用,但也认识到它也可能令人困惑 ......当然,对于初学者而言,也许对专家来说也会让人感到困惑. …

javascript language-design

8
推荐指数
2
解决办法
1645
查看次数

为什么IIS不支持分块传输编码?

我正在建立到IIS Web服务器的HTTP连接,并发送一个POST请求,其中包含使用Transfer-Encoding:chunked编码的数据.当我这样做时,IIS只是关闭连接,没有错误消息或状态代码.根据HTTP 1.1规范,

所有HTTP/1.1应用程序必须能够接收和解码"分块"传输编码

所以我不明白为什么它(a)不处理该编码和(b)它没有发回状态代码.如果我更改发送Content-Length而不是Transfer-Encoding的请求,则查询会成功,但这并不总是可行的.

当我对Apache尝试相同的事情时,我得到一个"需要411长度"的状态和一条消息"chunked Transfer-Encoding forbidden".

为什么这些服务器不支持此编码?

apache iis http chunked-encoding

7
推荐指数
2
解决办法
9157
查看次数

如何告诉编译器不要创建临时对象?

我正在更改一个过去采用整数参数的旧例程,以便它现在采用对象的const引用.我希望编译器能告诉我调用函数的位置(因为参数类型错误),但是对象有一个构造函数,它接受一个整数,所以编译器创建一个临时对象,而不是失败,传递给它整数,并将对它的引用传递给例程.示例代码:

class thing {
  public:
    thing( int x ) {
        printf( "Creating a thing(%d)\n", x );
    }
};

class X {
  public:
    X( const thing &t ) {
        printf( "Creating an X from a thing\n" );
    }
};


int main( int, char ** ) {
    thing a_thing( 5 );
    X an_x( 6 );
    return 1;
}
Run Code Online (Sandbox Code Playgroud)

我希望该X an_x( 6 )不能编译,因为没有X构造函数需要int.但它确实编译,输出如下:

Creating a thing(5)
Creating a thing(6)
Creating an X from a thing …
Run Code Online (Sandbox Code Playgroud)

c++ oop

7
推荐指数
1
解决办法
518
查看次数

C++非null终止char数组输出

我试图将一个非null终止的char数组输出到一个文件.

实际的是,我收到数据包,然后打印他们的字段.

现在,因为这些字段不是空终止的,例如,数据段的大小为512但可能完全占用也可能不完全占用.

当我将这些数据写入文件时,我使用简单的<<重载函数,它不知道有关实际数据的任何事情,只查找数据段的终止.

那么,我怎么能告诉输出函数只写这个特定数量的字节

而不是使用这样的东西,每次调用都很昂贵:

enter code here  

bytescopied = strncpy(dest, src, maxbytes);

if (bytescopied < 0) { // indicates no bytes copied, parameter error

    throw(fit);          // error handler stuff here

 } else if (bytescopied == maxbytes) {

    dest[maxbytes-1] = '\0';   // force null terminator

}
Run Code Online (Sandbox Code Playgroud)

c++ string file-io

7
推荐指数
1
解决办法
6694
查看次数

CAST错误地将float转换为varchar

组,我确定这是用户错误,但我试图将一列数字从浮点数转换为varchar.它适用于7位以下的任何数字,但如果数字为7位数,则将其转换为科学记数法或者他们称之为的数字.例如:

440000显示440000 1299125显示1.29913e + 006

看起来它正在向上舍入7位数字......我不知道为什么.

我试图转换它,因为我需要将它连接到其他所有VARCHAR字段

任何帮助是极大的赞赏

sql casting

6
推荐指数
1
解决办法
1万
查看次数

C++ SQLBindParameter

以下是变量的声明:

string strFirstName;
string strLastName;
string strAddress;
string strCity;
string strState;
double dblSalary;
string strGender;
int intAge;
Run Code Online (Sandbox Code Playgroud)

...做一些"cin"语句来获取数据......

retcode = SQLPrepare(StatementHandle, (SQLCHAR *)"INSERT INTO EMPLOYEE ([FirstName], [LastName], [Address], [City], [State], [Salary], [Gender],[Age]) VALUES (?,?,?,?,?,?,?,?)", SQL_NTS);

retcode = SQLBindParameter(StatementHandle, 1, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 50, 0 &strFirstName,0, NULL);

retcode = SQLBindParameter(StatementHandle, 2, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 50, 0, &strLastName,0, NULL);

retcode = SQLBindParameter(StatementHandle, 3, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 30, 0, &strAddress,0, NULL);

retcode = SQLBindParameter(StatementHandle, 4, SQL_PARAM_INPUT, SQL_C_CHAR, SQL_LONGVARCHAR, 30, 0, &strCity,0, NULL);

retcode …
Run Code Online (Sandbox Code Playgroud)

c++ odbc sqlbindparameter

5
推荐指数
1
解决办法
2万
查看次数

发送到HTTP代理服务器的URL格式是什么?

当我的应用程序从服务器(通过https)请求特定URL时,它会获得301 Moved Permanently重定向.但是,Location标头格式错误.我看到这样的事情:

> GET https://myserver/url HTTP/1.1
< 301 Moved Permanently
< Location: https://redirectedserverhttp://myserver/url
Run Code Online (Sandbox Code Playgroud)

如果我在没有主机的情况下发送请求,我会得到一个格式正确的URL:

> GET /url HTTP/1.1
< 301 Moved Permanently
< Location: https://redirectedserver/url
Run Code Online (Sandbox Code Playgroud)

我正在通过代理服务器并根据RFC 2068第5.1.2节," 当向代理发出请求时,必须使用absoluteURI表单 "所以看起来我正在以正确的方式执行它但代理正在响应不正确.如果我通过浏览器尝试这个,curl或wget它工作正常.我查看了wget代码,逻辑看起来像:

if( proxy && !https ) {
    use absoluteURI
} else {
    use relativeURI
}
Run Code Online (Sandbox Code Playgroud)

Wget甚至在其源代码中有评论:

/* When using SSL over proxy, CONNECT establishes a direct
   connection to the HTTPS server.  Therefore use the same
   argument as when talking to the server directly. */
Run Code Online (Sandbox Code Playgroud)

这是在某处定义的实际标准吗?如果应该使用绝对URI表单,为什么其他工具使用它,为什么它失败了?

https proxy http-redirect

5
推荐指数
2
解决办法
1万
查看次数

类型如何与自身不兼容?

在我的django应用程序(在Red Hat上运行的Django 1.6.0,python 2.7.5)中,我的数据库驱动程序从ctypes看到错误:

TypeError:类型不兼容,使用LP_c_int实例而不是LP_c_int实例

代码如下:

    is_null = value is None
    param.value.is_null = pointer(c_int(is_null)) <-- error occurs on this line
Run Code Online (Sandbox Code Playgroud)

我对ctypes并不是很熟悉(我继承了这段代码),但从表面上看,此错误消息没有任何意义。该代码已经运行了多年,但现在到处都可以看到此错误。我做错了什么吗?

由于IljaEverilä的评论,这是一个最小的复制:

from ctypes import *
from ctypes import _reset_cache

class DataValue(Structure):
    """Must match a_sqlany_data_value."""

    _fields_ = [("buffer",      POINTER(c_char)),
                ("buffer_size", c_size_t),
                ("length",      POINTER(c_size_t)),
                ("type",        c_int),
                ("is_null",     POINTER(c_int))]

d = DataValue()
_reset_cache()
is_null = False
d.is_null = pointer( c_int( is_null ) )
Run Code Online (Sandbox Code Playgroud)

python django ctypes

5
推荐指数
1
解决办法
224
查看次数