小编Mat*_*att的帖子

在Go中,break语句是否会从switch/select中断?

我知道switch/ selectcase在每个案例后自动中断.我想知道,在以下代码中:

for {
    switch sometest() {
    case 0:
        dosomething()
    case 1:
        break
    default:
        dosomethingelse()
    }
}
Run Code Online (Sandbox Code Playgroud)

是否break声明退出for循环或只是switch块?

select break go switch-statement

122
推荐指数
5
解决办法
7万
查看次数

如何使用Windows命令获取剪贴板内容?

例如,我可以将文件复制到剪贴板,如下所示:

clip < file.txt
Run Code Online (Sandbox Code Playgroud)

(现在内容file.txt在剪贴板中.)

我怎么能这样做:

???? > file.txt
Run Code Online (Sandbox Code Playgroud)

这样剪贴板的内容会在file.txt哪?

windows clipboard cmd copy-paste

37
推荐指数
7
解决办法
4万
查看次数

如何在Go中用符文迭代字符串?

我想这样:

for i := 0; i < len(str); i++ {
    dosomethingwithrune(str[i]) // takes a rune
}
Run Code Online (Sandbox Code Playgroud)

但事实证明,它str[i]有type byte(uint8)而不是rune.

如何用符文而不是字节迭代字符串?

string loops go rune

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

在Go中,有没有办法从另一个包访问结构的私有字段?

我在一个包含私有字段的结构中有一个结构:

package foo

type Foo struct {
    x int
    y *Foo
}
Run Code Online (Sandbox Code Playgroud)

另一个包(例如,白盒测试包)需要访问它们:

package bar

import "../foo"

func change_foo(f *Foo) {
    f.y = nil
}
Run Code Online (Sandbox Code Playgroud)

有没有办法声明bar是一种"朋友"包或任何其他方式,以便能够访问其foo.Foo私人成员bar,但仍然保持私有所有其他包(可能是某些东西unsafe)?

private friend package go

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

在C中,如何在进行execvp()或类似调用时将stdin/stdout/stderr重定向到文件?

我有以下代码:

pid_t pid = fork();
if (pid == -1)
{
    // ...
}
else if (pid == 0)
{
    stdin = someopenfile;
    stdout = someotherfile;
    stderr = somethirdopenfile;
    execvp(args[0], args);
    // handle error ...
}
else
{
    // ...
}
Run Code Online (Sandbox Code Playgroud)

问题是,execvp()调用的输入/输出仍然是控制台,而不是文件.显然,我做错了什么,做这件事的正确方法是什么?

c unix linux exec io-redirection

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

如何将三元运算符合并到优先爬升算法中?

我遵循"优先级爬坡"部分中给出的解释这个网页实现使用各种前缀的一元和二元中缀运算符的优先级爬坡算法算术评估.我还想包括三元运算符(即三元条件运算符?:).

网页上给出的算法使用以下语法:

E --> Exp(0) 
Exp(p) --> P {B Exp(q)} 
P --> U Exp(q) | "(" E ")" | v
B --> "+" | "-"  | "*" |"/" | "^" | "||" | "&&" | "="
U --> "-"
Run Code Online (Sandbox Code Playgroud)

如何将三元运算符合并到这个语法中?

c grammar parsing expression operator-precedence

20
推荐指数
2
解决办法
4109
查看次数

在C#中,Debug.Assert测试是否在发布模式下运行?

请看以下示例:

public void Foo()
{
    //Code...

    Debug.Assert(ExpensiveTest());

    //Code...
}
Run Code Online (Sandbox Code Playgroud)

Debug.Assert在发布模式下编译时,该方法会发生什么?会ExpensiveTest()继续吗?如果没有,那么它是如何工作的(因为它不是一个可以设置为无评估的宏)?如果它确实运行,那么这是否会破坏调试断言的目的?

.net c# debugging assert visual-studio

20
推荐指数
3
解决办法
5710
查看次数

重载函数以获取指针或引用是不好的做法吗?

例如,如果我有一个结构FooSpec:

struct FooSpec { /* lots of data */ };
Run Code Online (Sandbox Code Playgroud)

将以下两个都作为重载函数提供是不好的做法吗?或者我应该选择一个并坚持下去?

Foo *createFoo(const FooSpec *spec) { /* ... */ }
Foo *createFoo(const FooSpec &spec) { return createFoo(&spec); }
Run Code Online (Sandbox Code Playgroud)

两者都会导致意想不到的问题?

c++ pointers overloading reference

19
推荐指数
2
解决办法
1714
查看次数

在C中初始化循环数据.这个有效的C代码是否符合任何标准?

我想看看我是否可以初始化一个全局变量来指向自己:

#include <stdio.h>
struct foo { struct foo *a, *b; } x = { &x, &x };
int main()
{
    printf("&x = %p, x.a = %p, x.b = %p\n", &x, x.a, x.b);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

此代码编译并按预期运行gcc(所有三个指针打印相同).

我想知道:

  1. 这可靠吗?
  2. 这是标准吗?
  3. 这是便携式吗?

编辑:只是为了澄清,我质疑x其自己的初始化程序中的地址的可用性.

c gcc recursive-datastructures circular-reference static-initialization

16
推荐指数
2
解决办法
302
查看次数

有没有办法在运行时用C或C++编译其他代码?

这是我想要做的:

  1. 运行程序并初始化一些数据结构.
  2. 然后编译可以访问/修改现有数据结构的其他代码.
  3. 根据需要重复步骤2.

我希望能够既要做到这一点C,并C++使用gcc(并最终Java在类Unix系统(特别是Linux和Mac OS X)).我们的想法是基本上为这些语言实现一个read-eval-print循环,它们在输入时编译表达式和语句,并使用它们来修改现有的数据结构(在脚本语言中一直都是这样).我正在编写这个工具python,它生成C/ C++文件,但这不应该是相关的.

我已经探讨了使用共享库执行此操作,但了解到修改共享库不会影响已在运行的程序.我也尝试过使用共享内存但无法找到将函数加载到堆上的方法.我还考虑过使用汇编代码但尚未尝试这样做.

我宁愿不使用任何编译器,gcc除非绝对没有办法gcc.

如果有人有任何想法或知道如何做到这一点,任何帮助将不胜感激.

c c++ linux gcc runtime-compilation

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