小编cp.*_*ngr的帖子

关于C/C++文件名中下划线的任何规则?

我知道在C/C++ 中有标识符标识符中使用下划线.是否有在源代码文件名中使用它们的规则?

例如,对于使用下划线开头或结尾文件名有什么限制吗?或具有前下划线作为最后一个字符.c.h扩展?双重下划线?

如果有的话,参考文献是值得赞赏的.

c c++ filenames

4
推荐指数
2
解决办法
2471
查看次数

无法将字符串插入MySQL文本列

出于某种原因,当我写入"text"类型的列时,我的查询搞砸了.这是一个例子:

Describe messages;

Field         Type          Null  Key  Default  Extra
id            int(11)       NO    PRI  NULL     auto_increment
title         varchar(255)  YES        NULL 
body          text          YES        NULL 
to            text          YES        NULL 
content_type  varchar(255)  YES        NULL 
is_sms        tinyint(1)    YES        NULL 
user_id       int(11)       YES        NULL 
created_at    datetime      YES        NULL 
updated_at    datetime      YES        NULL
Run Code Online (Sandbox Code Playgroud)

然后我尝试插入:

INSERT INTO messages (id,title,body,to) VALUES ('1','Test Message','This is a test message. This is a test message. This is a test message. This is a test message.', 'an email' );
Run Code Online (Sandbox Code Playgroud)

由于某种原因,这会导致一般的MySQL语法错误.如果我删除"to"列并且它是查询中的相应值,则查询工作正常.

有任何想法吗?

mysql syntax text insert

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

USB设备何时应在散装管道上发送ZLP?

我正在为与WinUSB主机通信的USB 2.0全速设备编写固件,每个方向都有一个Bulk Pipe。设备何时应该发送零长度数据包(ZLP)来终止IN传输,它如何知道应该这样做?

USB 2.0规范的第5.8.3节说:

当端点执行以下操作之一时,批量传输完成:

  • 已准确传输了预期的数据量
  • 传输有效载荷大小小于wMaxPacketSize的数据包或传输零长度数据包[ZLP]

我的解释是,当传输大小是最大数据包大小的整数倍,并且传输的“预期”大小大于实际大小(即可以发送的大小)时,应该发送ZLP 。但是接收者如何知道期望的呢?

例如,我在C#中使用WinUSBNet包装器。当我从这样的管道中读取时

int bytesRead;
buffer = new byte[128];
try
{
   bytesRead = m_PipeIN.Read(buffer);
   buffer = buffer.Take(bytesRead).ToArray();
}
Run Code Online (Sandbox Code Playgroud)

该库将这样调用WinUsb_ReadPipe()

WinUsb_ReadPipe(InterfaceHandle(ifaceIndex),
   pipeID,
   pBuffer + offset,
   (uint)bytesToRead,
   out bytesRead,
   IntPtr.Zero);
Run Code Online (Sandbox Code Playgroud)

假设设备正好有128个字节要发送,最大数据包大小为64个字节。设备如何确定主机在“期待”什么,因此是否应发送ZLP来终止传输?

(类似于这个问题,但是那是关于控制管道的。我要问的是散装管道。)

windows usb winusb

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

C++:访问可能不存在的const向量成员 - try/catch或if(count!= 0)?

vector如果该成员存在,我想将a成员的副本分配给另一个变量.如果没有,则不应进行任何分配.不得对此进行任何更改vector.

我可以做try/ catch方法,或if(exists)/做方法.是否有理由偏爱另一个?即鉴于此

const vector<int> v = {}; // or maybe {1, 2, 5}
int myInt;
Run Code Online (Sandbox Code Playgroud)

传统的条件方法:

if (v.size() >= 2)
{
    myInt = v.at(1);
    // or myInt = v[1];
}
Run Code Online (Sandbox Code Playgroud)

试着抓:

try
{
    myInt = v.at(1);
}
catch(std::out_of_range)
{
}
Run Code Online (Sandbox Code Playgroud)

c++ stl try-catch c++11

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

C++模板根据类型选择代码块

是否可以在C++模板函数中根据参数的类型在编译时启用/禁用代码块?

(如果有可能,我怀疑std::enable_if可能是解决方案的一部分,但我还没有看到如何在编译时基于此选择代码块.)

我想做这样的事情.

template<typename T>
void captureData(T *data, size_t len, T scaleFactor)
{
    initCaptureDevice();

    for (size_t i = 0; i < len; i++)
    {
        IF(T is integral type) // determine at compile time which to use
        {
            data[i] = getRawSample();
        }
        ELSE
        {
            data[i] = getRawSample() * scaleFactor;
        }
    }

    cleanup();
}
Run Code Online (Sandbox Code Playgroud)

c++ templates c++11

-1
推荐指数
1
解决办法
114
查看次数

标签 统计

c++ ×3

c++11 ×2

c ×1

filenames ×1

insert ×1

mysql ×1

stl ×1

syntax ×1

templates ×1

text ×1

try-catch ×1

usb ×1

windows ×1

winusb ×1