小编jaa*_*aaq的帖子

Nmake无法在docker mount中找到文件

我有一个docker容器,用于编译项目,构建设置并将其导出容器.为此,我安装了签出的源($(Build.SourcesDirectory):C:/git/在TFS docker run任务的卷部分中使用)和2个不同文件夹中的输出文件夹.现在我的项目包含一个子模块,该子模块也被正确检出,所有文件都在那里.但是,当我的脚本执行nmake时,我收到以下错误:

Cannot find file: \ContainerMappedDirectories\347DEF6A-D43B-48C0-A5DF-CE228E5A10FD\src\Submodule\Submodule.pro

映射容器的路径映射到C:/git/Windows docker容器内部(在Windows主机上运行).我能够使用交互式PowerShell启动docker容器并挂载文件夹并找出以下内容:

  1. 所有文件都在容器中.
  2. 在执行docker cp project/ container:C:/test/和运行构建脚本时,它会找到所有文件并成功编译.
  3. 当使用powershell在docker中复制已安装的项目并启动构建脚本时,它也可以工作.

所以似乎nmake在docker中遍历已安装的容器时遇到了麻烦.知道如何解决这个问题吗?我宁愿避免将项目复制到容器中,因为与简单地安装签出的项目相比,这需要相当长的时间.

mount nmake compilation docker

6
推荐指数
0
解决办法
76
查看次数

C中输出的递归顺序

我在C中具有此递归函数,并且我试图理解为什么它以这种方式打印:

void rec(int x, int y){
 if (x == y) 
     return;
 rec(x--, y+1);
 printf("%3d%6.2f\n", x, (float) y);
}
Run Code Online (Sandbox Code Playgroud)

我知道rec(8,4)的输出是:

7 7.00
7 6.00
7 5.00
7 4.00
Run Code Online (Sandbox Code Playgroud)

为什么X值保持为7?据我所知,x--应该仅在写入行之后才发生。否则,为什么值保持为7而不减小?另外,为什么y值会减小?是因为在递归停止时它开始打印?

我是C语言的新手,并不习惯需要注意的所有小细节(我来自Java)

谢谢你的帮助!

c recursion

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

用颤振中的 2 张图像设计背景

我想创建一个新的无状态小部件类,它由 2 个图像(顶部,底部)和一条线(由函数定义,例如(x){x+500},宽度(如果不应该绘制,则可以为 0)定义,并且一种颜色)将两个图像分开。

对于每个像素:

  • 如果像素的y位置大于f(x) + width/2底部的像素的结果,则应绘制
  • 如果它小于f(x) - width / 2顶部的一个像素,则应绘制
  • 否则将绘制给定线条颜色的像素

Blow 看一个例子mywidget({'top': A, 'bottom': B, 'f': (x){return sin(x)+500;}, 'width': 1, 'color': Color(0xFFFFFFFF)});

(0,0)
+------+
|      |
|  A   |
| __   |
|/  \__|
|      |
|  B   |
+------+(e.g. 1920,1080)
Run Code Online (Sandbox Code Playgroud)

是否有一个线条小部件,其形状由(数学)函数定义?

就是做的唯一途径?或者是否有一个容器小部件已经允许这样做?我已经查看了Stack 小部件,但这并不能完全解决问题,因为我需要一个结构来决定如上所述渲染哪个像素。决定应该发生什么的函数应该由用户提供。

background flutter flutter-layout

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

作为可等值对象成员的可等值对象列表

我目前正在关注 resocoders clean 架构,在该架构中,他强烈建议使用Equatable来进行基本数据保存类,以便将来进行比较。问题是我的课程看起来像这样:

class Person extends Equatable {
  final String name;
  final List<AlterEgo> alterEgos;

  Person({@required name, @required alterEgos}):super([name, alterEgos]);

  @override
  List<Object> get props => [name, alterEgos];
}

class AlterEgo extends Equatable {
  final String name;
  final String superPower;

  AlterEgo({@required name, @required superPower}):super([name, superPower]);

  @override
  List<Object> get props => [name, superPower];
}

void main(){
Person("Clark", <AlterEgo>[AlterEgo("Superman", "Flying")]) == Person("Clark", <AlterEgo>[AlterEgo("Superman", "Flying")]) //true
}
Run Code Online (Sandbox Code Playgroud)

问题是,当我编写构造函数时,IDE 会抱怨列表不可比较。我有点不知道现在要定义哪些函数/类来获取由原始类型组成的对象列表以与 equatable 一起使用。该包的文档似乎也省略了这个用例,仅声明 Equatable 仅适用于不可变类型。不过,我根本不介意该列表是不可变的。

编辑:完成的示例。目前在移动设备上,无法立即测试。

dart equatable flutter

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

使用 $USER 时回显“root”

我想更好地了解 bash 以及何时评估变量。

使用时sudo可以检出使用的用户环境env与root环境交换。因此envsudo env产生不同的结果。

现在,如果我正在执行sudo echo "I am $USER"!结果是I am my-username! 而不是I am root!,大概是因为在执行 sudo 命令之前查找了 $USER 变量。

如何使用相同的命令I am root!来打印?我是否需要一些开关或以某种方式更改字符串?

bash sudo

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

枚举成员与类名冲突

我最近在处理一个小项目时产生了一系列错误的错误.这基本上是导致它的代码:

#include <memory>

enum derivedtype {B, C};

//abstract class
class A{};

class B : public A
{};
class C : public A
{};

int main()
{
  {
    std::unique_ptr<A> myb(new B);
    std::unique_ptr<A> myc(new C);
  }
}
Run Code Online (Sandbox Code Playgroud)

这产生了这个编译错误:

enumclasserror.cpp: In function ‘int main()’:
  enumclasserror.cpp:15:30: error: ‘B’ does not name a type
  std::unique_ptr<A> myb(new B);
                          ^
  enumclasserror.cpp:16:30: error: ‘C’ does not name a type
  std::unique_ptr<A> myc(new C);
Run Code Online (Sandbox Code Playgroud)

修复是在新的后添加class关键字:

std::unique_ptr<A> myb(new class B);
Run Code Online (Sandbox Code Playgroud)

现在,枚举被包含在原始代码中的abstact类的头文件中(这使得它更难以发现),但是从未明白过; 我原本无法想象枚举的成员会导致实例的创建失败.它花了我几个小时来找到那个bug.任何人都可以向我解释为什么会这样吗?新的内容对枚举有意义吗?

PS:这个错误是由一个使用clang的同事发现的,它提出了class关键字.正如你所看到的,我的Ubuntu上的标准c ++编译器没有...

c++ enums class derived abstract

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