小编Cla*_*dio的帖子

C++预处理器删除对可变参数宏的调用中的空白(Solaris Studio 12.3)

Oracle Solaris Studio 12.3的C++预处理器在扩展时会完全删除空白__VA_ARGS__.

有人可以在他们的系统上确认这种行为吗?它是一个已知的编译器错误吗?这个问题有没有解决方法?

为了说明,这是一个简单的测试程序,vaargs.c:

#include <stdio.h>

#define PRINT(...) printf("%s\n", #__VA_ARGS__)

int main()
{
    PRINT(hello world);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

C预处理器按预期工作:

$ cc vaargs.c -o vaargs && ./vaargs
hello world

$ cc -V
cc: Sun C 5.12 SunOS_i386 2011/11/16
Run Code Online (Sandbox Code Playgroud)

但是C++预处理器删除了"hello"和"world"之间的空格:

$ CC vaargs.c -o vaargs && ./vaargs
helloworld

$ CC -V
CC: Sun C++ 5.12 SunOS_i386 2011/11/16
Run Code Online (Sandbox Code Playgroud)

c++ solaris c-preprocessor variadic-macros solaris-studio

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

如何在不升级依赖项的情况下更新 Poetry 的锁定文件?

[tool.poetry.extras]部分添加到 后pyproject.toml,Poetry 会显示以下警告,例如在安装时:

警告:锁定文件不是最新的 pyproject.toml 中的最新更改。您可能会得到过时的依赖项。运行更新以更新它们。

这很好,但是如果我运行poetry update它会升级我的依赖项,这不是我目前想要的。如果我poetry lock改为运行,它仍然会升级依赖项。

很抱歉没有提供可重现的示例,生成具有过时依赖项的诗歌.lock 文件非常棘手。我现有的一个太大了,不能在这里张贴。

更新:为此问题打开了sdispater/poetry#1614

python python-poetry

6
推荐指数
2
解决办法
9669
查看次数

如何导出使用对象解构定义的常量

在 eslint 的首选解构规则的指导下,我定义了一些如下常量:

const {
    NODE_ENV,
    API_URL,
} = process.env;
Run Code Online (Sandbox Code Playgroud)

是否可以通过在语句前加上 前缀来导出这些常量export

export const {
    NODE_ENV,
    API_URL,
} = process.env;
Run Code Online (Sandbox Code Playgroud)

这看起来很自然,但eslint-plugin-import抱怨违反了import/named规则:API_URL not found in '../constants'。事实上,相关MDN页面export上也没有描述这种用法。

那么我们是否必须在单独的export语句中重复所有常量?

const {
    NODE_ENV,
    API_URL,
} = process.env;

export {
    NODE_ENV,
    API_URL,
};
Run Code Online (Sandbox Code Playgroud)

javascript node.js ecmascript-6 eslint es6-modules

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