小编x-x*_*x-x的帖子

c ++ 1y是否允许从派生类中进行基类变量的类内初始化?

而不是这个:

class base
{
    protected:
        base( int value )
            : member{value}
        {}

        int member = 0;
};

class derived_1 : public base
{
    public:
        derived_1()
            : base{ 1 }
        {}
};

class derived_2 : public base
{
    public:
        derived_2()
            : base{ 2 }
        {}
};
Run Code Online (Sandbox Code Playgroud)

这会很有用:

class base
{
    protected:
        int member = 0; // Default value
};

class derived_1 : public base
{
    base::member = 1; // Instead of passing it to a base class constructor
};

class derived_2 …
Run Code Online (Sandbox Code Playgroud)

c++ c++11 c++14

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

如何识别哪个时间驱动触发器调用了函数?

我在 Google Sheets 电子表格中有一个 Google App Script 函数,我需要使用时间驱动的触发器每天调用一次。

此函数的运行时间通常比脚本允许的最大时间(当前为 6 分钟)要长,因此我编写了它来通过多次调用来完成其工作。如果该函数尚未完成,我想创建一个临时的时间驱动触发器以在一分钟内再次运行该函数,并在调用该函数时删除临时触发器,但保持每日触发器处于活动状态。伪代码可能会更好地解释它......

function run_job_via_trigger(trigger) {
  if(trigger === temporary trigger) {
    // If this is a 'temporary' trigger that was created to
    // run the job after the first call then delete it.
    // This must not delete the daily trigger that makes the
    // first call to the function.
    // If I check the UID of the trigger here I still
    // would need to know which trigger is …
Run Code Online (Sandbox Code Playgroud)

google-sheets google-apps-script

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

在userdata上调用__len元方法时,Lua将两个参数传递给C,nil和userdata.什么是零?

这是一个小C测试程序,用于演示我所看到的内容.它使用Lua注册一个新的对象类型并执行Lua脚本.当脚本调用__len元方法时,我希望在堆栈上只传递一个参数 - 对象userdata.相反,它传递用户数据和一个神秘的零.

len.c:

#include <stdio.h>
#include <lua5.1/lua.h>
#include <lua5.1/lauxlib.h>
#include <lua5.1/lualib.h>

#define OBJECT_LEN 123456

/* Dummy object */
typedef struct {
    int length;
} object;

/* Create the new object and set the length to OBJECT_LEN */
static int object_new( lua_State *L ) {
    object *new = lua_newuserdata( L, sizeof( object ) );
    new->length = OBJECT_LEN;
    luaL_getmetatable( L, "metatable" );
    lua_setmetatable( L, 1 );
    return 1;
}

/* Get the objects length. */
static int object_len( lua_State *L ) …
Run Code Online (Sandbox Code Playgroud)

c lua

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

如何创建一个函数,返回一个向量,如果提供了自定义池分配器,但默认为std :: allocator?

在下面的代码中是函数make_vector().它创建一个向量并将其返回给调用者.我希望能够为要使用的向量指定分配器,但默认情况下使用默认的std :: allocator.这是因为在某些情况下,默认分配器是我所需要的,但有时我需要从一些预定义的内存池中分配.

我最接近的是make_vector2()函数模板.它适用于std :: allocator,但我不知道如何将'arena'参数传递给我的自定义分配器.

Hopefull这个有用的c ++ 11示例将更好地解释它:

#include <malloc.h>
#include <cinttypes>
#include <cstddef>
#include <iostream>
#include <limits>
#include <stdexcept>
#include <vector>

namespace mem
{
    // Memory arena to allocate from.
    enum class ARENA
    {
        TEXTURES,
        FONTS,
        SCRIPTS
    };

    // Allocate block from specific arena.
    void *malloc( const std::size_t size, const ARENA arena )
    {
        return std::malloc( size /*, arena */ );
    }

    // Free block from specific arena.
    void free( void *ptr, const ARENA arena )
    {
        std::free( …
Run Code Online (Sandbox Code Playgroud)

c++ templates allocator c++11

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

可以将Windows CRITICAL_SECTION对象配置为拒绝递归访问吗?

默认情况下,CRITICAL_SECTION对象是递归的.是否可以将此行为配置为pthread互斥锁以启用或禁用递归线程访问?

为了澄清以回应注释:我指的是Windows CRITICAL_SECTION对象,而不是Windows互斥锁.

winapi critical-section

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

更改到该目录时,如何从目录自动加载标记文件?

对于我的每个C++项目,我在源树的根目录中保留一个标记文件.当我更改它时,如何让Vim自动加载该目录的标记文件?

例如,我的目录布局如下所示:

~/dev/project1/tags
~/dev/project2/tags
Run Code Online (Sandbox Code Playgroud)

我启动Vim(来自GUI),当前工作目录默认为$ HOME.我键入:cd ~/dev/project/并且Vim应该加载~/dev/project/tags.明天我可能想在project2上工作,所以我希望Vim能够为我加载该项目的标签cd.

如何才能做到这一点?

vim ctags

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

如何从 Google Apps 脚本输出 HTML?

我有这个简单的脚本来获取页面并按原样输出它。但是,浏览器无法将输出识别为 HTML,而是将其显示为文本。

function doGet(e) {
  var url = e.queryString || "";
  if (url != "") {
    return getPage(url);
  }  
  return "not found";
}

function test() {
  return getPage("www.google.com");
}

function getPage(url) {
  var options = {
    headers : {'Cache-Control' : 'max-age=0'}
  };
  var response = UrlFetchApp.fetch(url, options);
  var html = response.getContent();
  return ContentService.createTextOutput(html).setMimeType(ContentService.MimeType.HTML);
}
Run Code Online (Sandbox Code Playgroud)

怎么了?如何将获取的页面输出为 HTML?

html web-applications google-apps-script

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

gcc C预处理器可以使用shell命令的输出吗?

例如,'uname -a'的输出可以用于创建下面的COMPILED_ON宏吗?

#include <stdio.h>

#define COMPILED_ON `call uname -a and use the output as a quoted string'

int main( int argc, char **argv ) {
    printf( COMPILED_ON );
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

c shell gcc c-preprocessor

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

如何将自定义语法高亮显示在.vimrc中?

我使用基本C/C++类型的简写形式,我希望Vim语法突出显示它们.我补充道

syn keyword cType u8 s8 u16 s16 u32 s32 u64 s64 f32 f64 byte

对我来说.vimrc,但这不起作用.我究竟做错了什么?

更新1其他地方已经建议问题是当Vim加载C或C++的语法文件时,它会覆盖.vimrc中的自定义语法.那是问题吗?

更新2 Duskwuff的回答暗示我要查看Vim的runtimepath变量,我将其设置为共享网络驱动器S:\vim\_vim,但是Vim仍然在寻找after目录中~\vimfiles\after,该目录不存在!我添加S:\vim\_vim\afterruntimepath变量,似乎已修复语法文件无法加载的问题.

c c++ vim syntax-highlighting

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

如何使用可变数量的参数创建一个模板化函数,将参数传递给对象的正确构造函数?

我有以下模板化功能......

template< class T > T *create_object( lua_State *L )    
{
    // Get a raw block of memory, managed by Lua.
    void *mem = lua_newuserdata( L, sizeof( T ) );
    // Construct the object in the allocated memory.
    T *object = new (mem) T;
    // Do other stuff here...
    return object;
}
Run Code Online (Sandbox Code Playgroud)

...分配并设置一个C++对象,以便在Lua脚本语言中使用.我想扩展这个函数,这样我就可以传入对象构造函数的参数.它可能看起来像这样:

template< class T > T *create_object( lua_State *L, ??? ctor_args )    
{
    void *mem = lua_newuserdata( L, sizeof( T ) );
    T *object = new (mem) T( …
Run Code Online (Sandbox Code Playgroud)

c++ lua templates variadic c++11

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

为什么我的C/C++头解析器不起作用?

我想将Boost预处理器库(以及最终其他的)捆绑到一个合并的头文件中,所以我将一个小的实用程序组合在一起以实现这个目标...只是它不起作用!我无法确定我的程序中的错误或实现问题(或两者)是否导致它无法正常工作.

程序应该打开boost\preprocessor\library.hpp标题(包括整个库)并递归输出到stdout库所需的所有标题.Windows资源管理器报告目录树​​中有(自Boost预处理器v1.59.0起)270个头文件,但我的程序只解析204.

我在另一个使用Boost预处理器的项目中使用它来测试合并的头.当使用boost\preprocessor\library.hpp标题时,项目编译并正常工作,但是当使用我的合并版本时,由于没有找到所需的所有Boost预处理器宏,编译失败.

完整,可编译的代码:(仅使用MSVC v19测试)

#include <assert.h>
#include <ctype.h>
#include <stdio.h>
#include <string.h>
#include <string>
#include <unordered_map>

// Remember what header files have already been parsed.
std::unordered_map<std::string, bool> have_parsed;

char include_dir[FILENAME_MAX]; // Passed in from the command line.

// Advance given pointer to next non-whitespace character and return it.
char* find_next_nonwhitespace_char(char* start) {
    while(isspace((int)(*start)) != 0) start++;
    return start;
}

#define DIE(condition, str) if(condition) {perror(str); exit(EXIT_FAILURE);}

int headers_parsed = 0;

void parse_header(const …
Run Code Online (Sandbox Code Playgroud)

c c++ parsing boost header-files

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