小编Ken*_*lor的帖子

Swift编译器错误:字符串连接上的"表达式太复杂"

我觉得这比任何事都更有趣.我修好了,但我想知道原因.这是错误:DataManager.swift:51:90: Expression was too complex to be solved in reasonable time; consider breaking up the expression into distinct sub-expressions.为什么抱怨?这似乎是最简单的表达方式之一.

编译器指向该columns + ");";部分

func tableName() -> String { return("users"); } 

func createTableStatement(schema: [String]) -> String {

    var schema = schema;

    schema.append("id string");
    schema.append("created integer");
    schema.append("updated integer");
    schema.append("model blob");

    var columns: String = ",".join(schema);

    var statement = "create table if not exists " + self.tableName() + "(" + columns + ");";

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

修复是:

var statement = "create …
Run Code Online (Sandbox Code Playgroud)

xcode functional-programming compiler-errors ios swift

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

是否有std :: function的独立实现?

我正在研究嵌入式系统,因此代码大小是一个问题.使用标准库将我的二进制大小提高了大约60k,从40k到100k.我想使用std :: function,但我不能证明它是60k.是否有可以使用的独立实现或类似的东西?我正在使用它在c ++ 11中使用绑定变量隐式地在成员函数中强制转换lambdas.

c++ embedded functional-programming stl

12
推荐指数
2
解决办法
1964
查看次数

有没有办法在c ++中使用异常,并不会花费额外的二进制大小60k?

我正在使用嵌入式平台,我不习惯在我的二​​进制文件中添加60k.无论如何,有一些论据可以避免嵌入式系统的异常,但我认为它们中的大多数是虚假的.例外是有道理的,但我无法证明其成本是合理的.我正在使用gcc 4.6.3,也许我错过了一个选项,或者这可能只是异常的开销.我已经尝试过-Os,并将例外更改为longjmp,但无济于事.我可能错过了什么.

感谢您的任何见解.

c++ compiler-construction embedded exception-handling

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

包括boost function.hpp,不使用它,我的二进制文件的大小增加了200k.为什么?

我正在研究嵌入式处理器,因此二进制大小非常重要.我试图避免使用标准库.但是,我想使用std :: function.我从boost中提取了"function.hpp",我正在尝试使用它,但只是包含function.hpp会增加我的二进制200k的大小,这使得它比我的处理器可以接受的大.如果我包含标准库,它只会增加我的二进制60k.我无法弄明白,如果我还没有使用任何模板,那就不应该有任何开销.即使我这样做,我也无法想象这是20万的代码.我正在使用gcc 4.7,我已经禁用了调试信息,我可以告诉"-g0"并打开优化"-O2".

任何帮助将非常感激.

c++ embedded gcc boost std

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

在C++中实例化一个类:奇怪的语法错误

我以前从未在C++中遇到过这个问题,但奇怪的是它仍然可以编译,但却没有达到我的预期.有人能告诉我它做了什么吗?请参阅代码,更多信息如下.

#include <iostream>
using namespace std;

class Test{
    public:
        Test();
};

Test::Test(){ cout << "ctor" << endl; }

int main(void){

    Test t();  // this compiles but doesn't call the constructor

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

它会编译,但如果我尝试使用"t"则不会.我只依赖于构造函数,我的代码没有按预期工作.解决方案是丢失括号"Test t();" "测试t;".我的问题是"测试t();" 例如,编译器认为它正在发生什么,它允许它编译.

c++ compiler-construction

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

我可以在 docker 容器中以非 root 用户身份绑定到端口 80。为什么?这是怎么回事?

简洁版本:

我可以在以非 root 用户身份运行时绑定到 docker 容器内的端口 80。请解释。

长版:

我对 docker 很陌生,但在其他方面有很多经验。除了这种行为之外,一切对我来说都是有意义的。

我尝试过 Google centos 基础镜像和最新的 docker ubuntu 镜像。

我使用以下 Dockerfile 在这些基础上构建了一个 docker 映像:

FROM marketplace.gcr.io/google/centos7

# or for ubuntu
# FROM ubuntu
# RUN apt-get update -y && apt-get install -y python

RUN groupadd -g 1000 container && useradd -r -u 1000 -g container container
USER container
Run Code Online (Sandbox Code Playgroud)

伟大的。然后我使用 构建并运行它,现在我位于返回“container”的docker run --rm -it <img_name>容器中。whoami我没有root权限。touch /root/foo失败并拒绝访问。

嗯不错。非root用户,无需root权限运行。我不能sudo。我不能su root。正如我所期望的那样。

然后我运行:

python -m SimpleHTTPServer …

docker

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