小编Bri*_*erg的帖子

为什么makefile有时会将'true <filename>'作为构建脚本的一部分?

例如:

# Some stuff

all: some dependencies
    @$(CC) -o foo.o foo.c
    @true foo.o
    @some other operation
Run Code Online (Sandbox Code Playgroud)

"真正的foo.o"系列的目的是什么?

makefile

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

Shell测试以查看二进制文件是否在您的路径中

在csh,tcsh,bash,perl(等)中你可以进行与之相同的测试(不一定使用相同的语法):

test -e PATH; # Does PATH exist
test -f PATH; # Is PATH a file
test -d PATH; # is PATh a directory
...
Run Code Online (Sandbox Code Playgroud)

是否存在类似的结构来检查二进制文件是否在您的路径中?(也许是否存在别名,甚至内置存在)

显然,这可以用以下形式完成:

#!/usr/bin/env bash
C=COMMAND;
test $(which $C) -o $(alias $C) && "$C exists"
Run Code Online (Sandbox Code Playgroud)

或其他shell /脚本语言中的类似内容.

问题不在于是否可以测试程序,命令等是否存在.问题是内置测试是否存在.

bash shell perl csh tcsh

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

如何在GNU Make中使用$(call ...)进行可变参数宏

我创建了一个用于makefile的宏:

TODO_MSG = $(warning TODO: $(1))
$(call TODO_MSG, This part of the msg displays fine, but this part does not)
Run Code Online (Sandbox Code Playgroud)

我可以通过以下方式解决这个问题:

BLAH := $(shell perl -e 'print join( " ", 2..200 )'
COMMA := ,
TODO_MSG = $(warning TODO:$(1)$(strip $(foreach x,${BLAH},$(if $(${x}),${COMMA}$(${x}))))
Run Code Online (Sandbox Code Playgroud)

...但我很好奇是否有任何东西可以为变量宏提供更明确的支持.

macros gnu-make variadic-macros

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

Matlab:是否可以创建信号处理程序(.m脚本)

我查看了文档等,但我没有看到任何明显的东西.我想有可以拦截一个信号处理程序^C,^\或可能被用于中断长时间运行的脚本某些其他按键(每一个离散的计算典型地<1秒),并允许其正常退出并保存当前的状态.

Matlab确实有COM的事件处理程序,但它只是windows,我在*nix环境中.

如果答案是'艰难的运气',那我很酷......我只是没有看到任何说我已经SOL的东西了.

matlab signal-handling

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

Android:lockCanvas()和lockCanvas(null)之间有什么区别?

标题说得很清楚,虽然我会给出一个代码示例以防万一.这来自Android SDK中的LunarLander示例:

    @Override
    public void run() {
        while (mRun) {
            Canvas c = null;
            try {
                c = mSurfaceHolder.lockCanvas(null);
                synchronized (mSurfaceHolder) {
                    if (mMode == STATE_RUNNING) updatePhysics();
                    doDraw(c);
                }
            } finally {
                // do this in a finally so that if an exception is thrown
                // during the above, we don't leave the Surface in an
                // inconsistent state
                if (c != null) {
                    mSurfaceHolder.unlockCanvasAndPost(c);
                }
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

lockCanvas()必须重新绘制所有像素的文档,而lockCanvas(Rect dirty)表示您只需要重新绘制像素dirty.我看到了传递null给这个函数的两种可能的解释:它不需要重新绘制任何像素,或者行为方式与之相同lockCanvas().

android surfaceview

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

c++ 默认参数:是否可以在不覆盖早期默认参数的情况下覆盖默认参数

我有一个功能:

int function(int a, int b = 1, int c = 2){
    return a+b+c;
}
Run Code Online (Sandbox Code Playgroud)

我想将“c”变量的值设置为 3,但不想设置“b”的值

在像 python 这样的语言中我可以这样做:

function(23,c=3)
Run Code Online (Sandbox Code Playgroud)

然而在 C++ 中我找不到一种方法来做类似的事情。我能找到的所有示例都涉及在“c”值之前设置“b”值,如下所示:

function(23,1,3);
Run Code Online (Sandbox Code Playgroud)

如何直接设置默认参数的值?

c++ function

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

用于初始化数组/结构的不熟悉的语法,寻找解释

我正在查看由名为OVP的公司(类似于qemu的产品)提供的"处理器建模指南".在其中,有一个类似于以下内容的小代码片段:

static or1kDispatchTableC dispatchTable = {
  // handle arithmetic instructions
  [OR1K_IT_ADDI] = disDefault,
  [OR1K_IT_ADDIC] = disDefault,
  [OR1K_IT_ANDI] = disDefault,
  [OR1K_IT_ORI] = disDefault,
  [OR1K_IT_XORI] = disDefault,
  [OR1K_IT_MULI] = disDefault
};
Run Code Online (Sandbox Code Playgroud)

我以前从未见过这样的语法. 删除了关于C++的无关紧要的东西

目前我没有能力下载/查看他们的东西,看看有什么定义,因此我的问题.如果你认识到这种语法,你能说出来吗?


编辑

or1kDispatchTableC是类型指针的typedef or1kDispatchTableCP,但我仍然没有任何东西or1kDispatchTableCP.

c syntax c99 aggregate-initialization c11

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