小编MOH*_*MED的帖子

为什么__last__元素需要c struct padding

我知道填充,它的规则,它为什么需要等.

我的问题是结构,

struct my_struct {
   int a;
   char c;
};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,c的起始地址是字对齐,但仍然编译器添加3个字节(假设4作为字大小)填充.在c之后没有元素,为什么我们需要这3个字节?我查了下面的,

int g_int1;
struct my_struct st;
int g_int2;
Run Code Online (Sandbox Code Playgroud)

通过以上我的意思是我的其余变量声明不依赖于先前变量大小的单词align-ness.编译器总是尝试对齐下一个变量,而不管其全局或局部自动变量.

我看不出有任何关于endian-ness的原因,因为这是char并且对于一个字节它并不重要.我认为是什么原因而不是检查最后一个元素条件编译器总是在需要时添加填充.

什么能有正当理由?

c struct alignment padding

3
推荐指数
2
解决办法
1121
查看次数

内联递归函数

当gcc生成asm代码时,内联函数将被其代码替换.

使用内联递归函数时的行为是什么

inline int fact (int n)
{
    if (n<=1)
        return 1;
    else
        return (n * fact(n-1));
}
Run Code Online (Sandbox Code Playgroud)

我生成asm代码,gcc -S当递归函数带有inline前缀时,当递归函数没有inline前缀时,我发现两种情况的asm代码是相同的.

你对此有任何解释吗?

c recursion inline

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

"pthread_mutex_t mutex = {0}"初始化互斥锁吗?

是否可以通过这种方式初始化互斥锁:

pthread_mutex_t  mutex = {0};
Run Code Online (Sandbox Code Playgroud)

以下3个互斥锁初始化有什么区别:

1) pthread_mutex_init(&mutex, NULL);
2) pthread_mutex_t  mutex = {0};
3) pthread_mutex_t  mutex = PTHREAD_MUTEX_INITIALIZER;
Run Code Online (Sandbox Code Playgroud)

c c++ linux mutex pthreads

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

如何将所有设置位向右移动?

问题:如何开发算法将所有设置位(1)以32位整数移位到右侧

V= 0b01001000110010 
Run Code Online (Sandbox Code Playgroud)

V包含5位集,如果我们将其转移到我们得到正确的:

V = 0b011111
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

v = v - ((v >> 1) & 0x55555555);                    // reuse input as temporary
v = (v & 0x33333333) + ((v >> 2) & 0x33333333);     // temp
c = ((v + (v >> 4) & 0xF0F0F0F) * 0x1010101) >> 24; // count
Run Code Online (Sandbox Code Playgroud)

上面的代码返回32位整数的设置位数

并使用以下代码

c = (1<<c) - 1;
Run Code Online (Sandbox Code Playgroud)

我们将第c一个位设置为1.

还有其他算法比上述解决方案更好吗?

是否有可能只使用位运算(&,|,^,~, …

c c++ bit-manipulation

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

c中的这个陈述是什么意思?

struct abc
{
//some members
}arrayOf[10];
struct def
{
//some data memebers
}obj;

typedef void (*abc) (obj)
Run Code Online (Sandbox Code Playgroud)

我不确定该陈述的typedef void (*abc) (obj)含义是什么.请考虑我是新手.

c struct pointers typedef

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

为什么char比较"if(c> ='a'&& c <='z')"不可移植?

有人告诉我,char比较if(c>='a' && c<='z')不便携.

int main() {
    char c;
    scanf("%c", &c);
    if(c>='a' && c<='z')
        printf("lower case\n");
}
Run Code Online (Sandbox Code Playgroud)

任何证据表明char比较if(c>='a' && c<='z')不可移植?

c comparison char

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

如何计算Bash中字符串中的单词数

我有以下字符串,其中包含以空格分隔的单词

str="word1 word2 word3"
Run Code Online (Sandbox Code Playgroud)

如何统计单词数量?

我不想在计数器上使用for循环.我想在一个命令中完成它.

linux bash shell

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

Sed错误"sed:unmatched'/'"

我有一个包含以下格式的数据的文件:

{"parameter":"toto.tata.titi", "value":"0/2", "notif":"1"}
Run Code Online (Sandbox Code Playgroud)

我使用sed对文件进行了更改:

sed -i "/\<$param\>/s/.*/$line/" myfile
Run Code Online (Sandbox Code Playgroud)

哪个line变量是

{"parameter":"toto.tata.titi", "value":"0/2", "notif":"3"}
Run Code Online (Sandbox Code Playgroud)

param变量是toto.tata.titi

以上sed命令返回错误:

sed: unmatched '/'
Run Code Online (Sandbox Code Playgroud)

因为line变量包含/==>"0/2"

即使line变量包含,如何更新我的sed命令使其工作/

linux bash shell sed

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

带有"["和"]"分隔符的awk错误

我有字符串看起来像这样

string="xxxxx.yyyyy[2].zzzzz"
Run Code Online (Sandbox Code Playgroud)

我想提取之间的数字[ ].我使用了以下awk命令

echo $string | awk -F'[]' '{print $2}'
Run Code Online (Sandbox Code Playgroud)

但是此awk命令返回错误:

awk: bad regex '[]': Unmatched [ or [^
Run Code Online (Sandbox Code Playgroud)

如何解决?

linux shell awk ash

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

当变量调用时,我如何调用别名

我添加了一个别名:

$ alias anyalias="echo kallel"
Run Code Online (Sandbox Code Playgroud)

如果我执行:

$ anyalias
kallel
Run Code Online (Sandbox Code Playgroud)

它执行echo命令没有任何问题.

现在,如果我以这种方式定义变量:

$ var="anyalias"
Run Code Online (Sandbox Code Playgroud)

然后以这种方式执行:

$  $var
-ash: anyalias: not found
Run Code Online (Sandbox Code Playgroud)

然后我收到了一个shell错误.

如何$var运行anyalias别名中定义的命令?

我不打算改变打电话的方式$var.但我正在寻找一种方法来改变别名的定义或导出它.

linux bash shell alias

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

标签 统计

c ×6

linux ×5

shell ×4

bash ×3

c++ ×2

struct ×2

alias ×1

alignment ×1

ash ×1

awk ×1

bit-manipulation ×1

char ×1

comparison ×1

inline ×1

mutex ×1

padding ×1

pointers ×1

pthreads ×1

recursion ×1

sed ×1

typedef ×1