小编Bri*_*and的帖子

将std :: chrono :: duration存储为成员的类?

我想创建一个类,其构造接受一个std::chrono::duration参数并将结果存储在一个成员中,以便我以后可以将其传递给std::this_thread::sleep_for().

我知道我可以编写一些函数模板,其工作sleep_for方式如下:

template <typename Rep, typename Period>
void mySleep( std::chrono::duration<Rep, Period> time )
{
  std::this_thread::sleep_for(time);
}
Run Code Online (Sandbox Code Playgroud)

这可能是一个类的成员函数.但是下面这个案子呢?

class UsesDuration
{
public:
   template <typename Rep, typename Period>
   UsesDuration( std::chrono::duration<Rep, Period> dur ) :
      my_duration(dur) { }

   void doSomethingPeriodic()
   {
       while( some_condition )
       {
          std::this_thread::sleep_for(my_duration);
          somethingInteresting();
       }
   }    

private:
   ???  my_duration;   /* How do I declare this??? */
}
Run Code Online (Sandbox Code Playgroud)

是否有一种干净的方法来保持持续时间"抽象"A)理想情况下不将整个班级变成模板化的类,B)将类转换为类模板?

c++ c++11 c++-chrono

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

HTML多部分表单 - "边界"字符串的最大长度?

在多部分(即Content-Type=multipart/form-data)形式中,HTTP服务器应该接受的边界字符串的长度是否有上限?

据我所知,相关的RFC说70个字符:

  • RFC2616(HTTP/1.1)部分"3.7媒体类型"表示Content-Type标头中允许的类型由RFC1590(媒体类型注册过程)定义.
  • RFC1590更新RFC-1521(MIME).
  • RFC1521说边界"必须不超过70个字符,不包括两个主要连字符".
  • 同样的文本也出现在RFC2046中,据称它已废弃RFC1521.

那么我可以肯定今天所有主要的HTTP/1.1浏览器都遵守这个限制吗?是否有任何浏览器(或其他HTTP客户端/库)可以打破此限制?

是否有一些其他规格或常见的经验法则我错过了说字符串将于70个字符?在Chrome(ium)中,我得到了这样的东西:----WebKitFormBoundaryLu4dNSGEhJZUgoe5显然短于70个字符.

我问这个问题是因为我的服务器是在极其受内存限制的环境中运行的,因此"malloc缓冲区大到足以容纳整个标头字符串"并不是一个理想的答案.

html http mime-types

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

gdb - 用于远程目标的generate-core-file?

我正在调试ARM的代码源版本的gdb(即arm-none-eabi-gdb)并尝试生成核心文件以供以后检查.OpenOCD是我的GDB目标.所有gdb告诉我,当我运行'gcore'或'generate-core-file'时,"无法创建corefile".有什么建议?通常可以使用远程目标进行核心转储吗?

gdb arm cortex-m3 codesourcery

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

带有 printf 样式字符串的 C++ 异常类?

在 C++11 中,是否有一种简单的(甚至更好的内置)方法来执行此类操作以在异常中执行 printf 样式的字符串?

throw std::runtime_error( "Failed to open '%s' [%d]: %s", 
         filename, errno, strerror(errno) );
Run Code Online (Sandbox Code Playgroud)

我知道我可以snprintf给一个 `char []' 然后将结果传递给一个异常构造函数,或者先转换为 std::string 。

只是想知道 C++11 是否提供更好/更简单的东西。

c++ c++11

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

用于丑陋的C结构分配的现代C++模式

我正在ioctl从C++调用一个我不拥有/维护的驱动程序,并且我正在尝试理清是否有一个干净的"安全"机制来处理所需的一些丑陋的结构分配.

涉及一些结构的细长版本

// IOCTL expects an instance of this structure "first"
typedef struct {
   int param1;
   int param2;
} s_ioctl_request;

//... followed by an instance of this.  If attr_length
// is > sizeof(s_attr_header), more data is allowed to follow.
typedef struct {
   uint32_t attr_length;
   uint32_t attr_type;
} s_attr_header;

// Example that uses more data than just the header.
typedef struct {
   s_attr_header   hdr;
   uint32_t attr_param;
} s_attr_type1;

// Another example.
typedef struct {
   s_attr_header   hdr;
   uint32_t attr_param1;
   uint32_t …
Run Code Online (Sandbox Code Playgroud)

c c++11

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

gmtime算法的最小实现?

有没有人知道一个简单的gmtimectime实现没有考虑时区,没有外部依赖,和非Copyleft许可(BSD/MIT /任何专有安全)?最好是在C中,但基本上任何以最小形式给出算法的东西都可以工作.

我只需要秒,因为"1970年1月1日00:00:00"分解为年,日,月,小时,分钟,秒.现在几乎是星期五回家的时间,所以我感觉有点懒.

c c++ unix-timestamp

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

如何使用 crt0.o 在我的裸机 C 程序中设置 .bss 和 .data?

我成功地编写了一个在我的 STM32F4 上运行的裸机 C 程序。没什么特别的,只是通常的led-blinky-program。在这个项目中,我编写了初始化例程,用于清除该.bss部分并.data自己初始化该部分。

这并不复杂。在链接器脚本中,我只是指示链接器创建一些标记.dataand.bss部分的开始和结束的符号。

.data 0x20001000 :
    ALIGN(4)
    {
        __etext = LOADADDR(.data);
        __data_start__ = ADDR(.data) ;
        *(.data*) ;
        __data_end__ = ADDR(.data) + SIZEOF(.data) ;
    } >RAM AT>ROM


.bss :
    ALIGN(4)
    {
        __bss_start__ = ADDR(.bss) ;
        *(.bss*) ;
        __bss_end__ = ADDR(.bss) + SIZEOF(.bss) ;
    } >RAM
Run Code Online (Sandbox Code Playgroud)

然后我在我的代码中使用了这些符号:

extern unsigned int __etext;
extern unsigned int __data_start__;
extern unsigned int __data_end__;
extern unsigned int __bss_start__;
extern unsigned int __bss_end__;


void Reset_Handler()
{
    unsigned …
Run Code Online (Sandbox Code Playgroud)

c embedded crt bare-metal cortex-m

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

gnumake和模式规则

我正在使用GNUmake从源目录生成某些Web内容的部署版本.我想成为通过压缩工具运行一些文件的规则(例如YUI压缩器),然后对于没有规则的任何东西,只需复制它.

例如:

# Rule with all the $(WWW_OUT_DIR)/*.* files as a prerequisite
all: $(WWW_OUT_FILES)

# Generic rule to perform compression on Javascript files.
$(WWW_OUT_DIR)/%.js:     $(WWW_SRC_DIR)/%.js
    $(YUI_COMP) $(YUI_COMP_OPTS) $< > $@

# Generic rule to perform compression on CSS files.
$(WWW_OUT_DIR)/%.css:    $(WWW_SRC_DIR)/%.css
    $(YUI_COMP) $(YUI_COMP_OPTS) $< > $@

# TDB Rule to magically handle everything else? (This doesn't work)
$(WWW_OUT_DIR)/%.%:   $(WWW_SRC_DIR)/%.%
    cp $< $@
Run Code Online (Sandbox Code Playgroud)

我如何完成最后一条规则试图做的事情?即对于$(WWW_OUT_FILES)中不是.js或.css的所有内容,只需复制它?如果可能,我想保留对相应输入文件的依赖.

makefile gnu-make

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

棘手的数组初始化

在C(NOT C++)中,我试图创建两个包含相同值的字符串表,但是以两种不同的方式对值进行排序.而且我不希望字符串在内存中重复.

基本上,我想做以下几点.除了根据gcc,它失败,因为在第二个数组初始化中"初始化元素不是常量".有什么方法可以解决这个问题吗?最好不要说"哦,编译器应该优化它来做你想做的事情"?

static const char * monthNames[] = {
  "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
};


/******** 
 * Month table sorted for O(log N) string lookup
 */
static const char * monthSortedKeys[]= {
  monthNames[3],          /* Apr */
  monthNames[7],          /* Aug */
  monthNames[11],         /* Dec */
  monthNames[1],          /* Feb */
  monthNames[0],          /* Jan */
  monthNames[6],          /* Jul */
  monthNames[5],          /* Jun */
  monthNames[2],          /* Mar */
  monthNames[4],          /* May */
  monthNames[10],         /* Nov */ …
Run Code Online (Sandbox Code Playgroud)

c

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

Git:将浅克隆推送到一个新的遥控器而不是“不浅的”?

我用git clone --depth=1. 我做了一些改变……显然不了解浅克隆的复杂性……现在想把新项目推到一个新的远程。

在我的主要开发机器上:

git clone --depth=1 file://old_project new_project
cd new_project
# made a handful of commits here....
Run Code Online (Sandbox Code Playgroud)

我现在想将项目推送到另一台机器上。在那个远程机器上我做了:

git init --bare new_project.git
Run Code Online (Sandbox Code Playgroud)

然后回到我的机器上:

git remote remove origin
git remote add origin ssh://<remote host>/path/to/repos/new_project.git
Run Code Online (Sandbox Code Playgroud)

现在,当我尝试push该项目时,我得到:

fatal: protocol error: expected old/new/ref, got 'shallow 7f6a256...'
fatal: The remote end hung up unexpectedly
Counting objects: 49299, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (44533/44533), done.
error: pack-objects died of signal 13
error: failed to …
Run Code Online (Sandbox Code Playgroud)

git

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