我正在阅读一些shell脚本教程并找到以下示例程序:
#!/bin/sh
clear
echo "HELLO WORLD"
Run Code Online (Sandbox Code Playgroud)
任何人都可以告诉我#!/bin/sh在评论中提及' ' 的意义是什么?
在尝试读取版本号时vim,我得到了许多额外的行,我需要忽略它们.我试着阅读手册head并尝试以下命令:
vim --version | head -n 1
Run Code Online (Sandbox Code Playgroud)
我想知道这是否是正确的方法?
我想要一个正则表达式,当应用于:"firstsecondthird"将匹配"第三个"(在单个组中,即在C#Match.Value中将等于"第三个").
那可能吗?我们可以忽略后缀或前缀,但是中间?
说我有一个结构
typedef struct A{
int a1;
int *a2;
}A_t;
Run Code Online (Sandbox Code Playgroud)
现在如果我声明这个结构的实例是volatile的 -
volatile A_t trial;
Run Code Online (Sandbox Code Playgroud)
我使用volatile指针来访问这个volatile结构.
volatile A_t *ptrToTrial = &trial;
Run Code Online (Sandbox Code Playgroud)
如果我尝试这样做:
int *ptrToField = ptrToTrial->a2;
Run Code Online (Sandbox Code Playgroud)
应该ptrToField也是不稳定的吗?编译器prtToField是否会在没有明确提及的情况下知道它是volatile,因为它是通过ptrToTrialvolatile 访问的?
如果有功能 -
function trialFunction(A_t *trialptr)
{
int *p = trialptr->a2;
}
Run Code Online (Sandbox Code Playgroud)
如果我们用上面声明的volatile ptr调用这个函数 -
trailFunction(ptrToTrial)
Run Code Online (Sandbox Code Playgroud)
我收到一个错误:volatile A_t* is incompatible with parameter of type A_t.
因此,如果我将函数定义更改为include volatile,我看不到错误.
function trialFunction(volatile A_t *trialptr)
{
int *p = trialptr->a2;
}
Run Code Online (Sandbox Code Playgroud)
编译器是否也应该抱怨指针p- 因为p它trialptr->a2是非易失性的并且是易失性的?
似乎你可以写一个否定的条件
if ! [[ ... ]]; then
Run Code Online (Sandbox Code Playgroud)
要么
if [[ ! ... ]]; then
Run Code Online (Sandbox Code Playgroud)
是否有理由选择一种或另一种方法,假设操作的语义相同?(即,显然,在第二个版本中,如果...是复合语句并且您不小心将表达式正确分组,那么您最终可能只会否定表达式的第一部分.)
我想在 中打印 1010 的十进制值gdb,但它打印的结果是我最后给出的结果。
(gdb)
(gdb) p/d 1010
$1 = 1010
(gdb)
Run Code Online (Sandbox Code Playgroud) 我试图在这里阅读其他类似标题的问题,但是对于我来说,能够将解决方案(甚至解释)应用到我自己的问题上看起来有点过于复杂,这似乎是更简单的性质.
在我的例子中,我有一个包装器free(),NULL在释放它之后将指针设置为:
void myfree(void **ptr)
{
free(*ptr);
*ptr = NULL;
}
Run Code Online (Sandbox Code Playgroud)
在我正在研究的项目中,它被称为:
myfree((void **)&a);
Run Code Online (Sandbox Code Playgroud)
这使得gcc(OpenBSD上的4.2.1)发出警告"解除引用类型 - 惩罚指针将破坏严格别名规则",如果我将优化级别调高-O3并添加-Wall(否则).
调用myfree()以下方法不会使编译器发出该警告:
myfree((void *)&a);
Run Code Online (Sandbox Code Playgroud)
所以我想知道我们是否应该改变我们打电话的方式myfree().
我相信我用第一种调用方式调用未定义的行为myfree(),但我无法解决原因.此外,在我可以访问(clang和gcc)所有系统(OpenBSD,Mac OS X和Linux)上的所有编译器上,这是唯一实际上给我警告的编译器和系统(我知道发出警告是一个不错的选项) ).
在调用之前,之内和之后打印指针的值myfree(),使用两种方式调用它,给我相同的结果(但如果它是未定义的行为,则可能没有任何意义):
#include <stdio.h>
#include <stdlib.h>
void myfree(void **ptr)
{
printf("(in myfree) ptr = %p\n", *ptr);
free(*ptr);
*ptr = NULL;
}
int main(void)
{
int *a, *b;
a = malloc(100 * sizeof *a);
b …Run Code Online (Sandbox Code Playgroud) 大家好,我正在尝试使用像这样的英特尔内在函数
void test()
{
uint16_t n1 = 5;
uint16_t n2 = 2;
__m64 vec1, vec2, res;
vec1 = _mm_set_pi16(n1, n1, n1, n1);
vec2 = _mm_set_pi16(n2, n2, n2, n2);
res = _mm_add_pi16(vec1, vec2);
printf("%u %u %u %u \n", vec1[0], vec1[1], vec1[2], vec1[3]);
printf("%u %u %u %u \n", vec2[0], vec2[1], vec2[2], vec2[3]);
printf("%u %u %u %u \n", res[0], res[1], res[2], res[3]);
}
Run Code Online (Sandbox Code Playgroud)
但是我得到的结果很奇怪:
327685 327685 131074 131074
131074 131074 458759 458759
458759 458759 327685 327685
Run Code Online (Sandbox Code Playgroud)
我正在使用eclipse Mars ......我包括mmintrin.h, xmmintrin.h, …
我是新手Makefile,喜欢install在Makefile. 我的Makefile将被另一个人Makefile这样调用:
DESTDIR=$(DIR_A) BINDIR=/dir_b make -C $(CURDIR)/xxxx/yyy all
Run Code Online (Sandbox Code Playgroud)
where/xxxx/yyy是 myMakefile所在的位置。
我Makefile将生成 2 个我喜欢安装的二进制文件,即通过安装,我的意思是将这两个二进制文件复制到特定目录 ( BINDIR) 并使它们可执行。
install如果我的 2 个二进制文件是在文件夹中生成的,那么在这种情况下我应该如何编写目标/aaaa/bbbb/bin?