应用于位域时,Sizeof()不起作用:
# cat p.c
#include<stdio.h>
int main( int argc, char **argv )
{
struct { unsigned int bitfield : 3; } s;
fprintf( stdout, "size=%d\n", sizeof(s.bitfield) );
}
# gcc p.c -o p
p.c: In function ‘main’:
p.c:5: error: ‘sizeof’ applied to a bit-field
Run Code Online (Sandbox Code Playgroud)
......显然,因为它无法返回浮点部分大小或其他东西.然而,它提出了一个有趣的问题.在C中是否有一个等价物来告诉你变量/类型中的位数?理想情况下,除了位域之外,它也适用于常规类型,如char和int.
更新:
如果对于位域没有相当于sizeof()的语言,那么计算它的最有效方法是什么 - 在运行时!想象一下,你有依赖于此的循环,如果改变位域的大小,你不希望它们破坏 - 并且没有公平的作弊,并使位域大小和循环长度成为宏.;-)
我正在寻找一种打包算法,它将正多边形缩小为矩形和直角三角形.该算法应该尝试使用尽可能少的这种形状,并且应该相对容易实现(考虑到挑战的难度).
如果可能,这个问题的答案应该解释建议算法中使用的一般启发式方法.
我有两个shell脚本,我想从C程序调用.我希望在第一个脚本中设置的shell变量在第二个脚本中可见.这是它的样子:
灰:
var=blah
<save vars>
Run Code Online (Sandbox Code Playgroud)
b.sh:
<restore vars>
echo $var
Run Code Online (Sandbox Code Playgroud)
到目前为止,我提出的最好的是"set>/tmp/vars"的变体来保存变量,"eval $(cat/tmp/vars)"来恢复它们.当它试图恢复只读变量时,"eval"会窒息,所以我需要把它们弄出来.可以通过"declare -r"获得这些变量的列表.但是有一些变量没有出现在这个列表中,但仍然无法在eval中设置,例如BASH_ARGC.所以我也需要把它们弄出来.
在这一点上,我的解决方案感觉非常脆弱且容易出错,而且我不确定它是多么便携.有一个更好的方法吗?
我在桌面上创建了一个存储库并推送到github,然后将该存储库克隆到我的笔记本电脑进行开发,之后提交了更改并推送到github.现在回到我的桌面,我尝试'git pull'来获得我所做的所有更改,它显示错误消息:Permission denied(publickey)致命:远程端意外挂断.
怎么会发生这种情况?我最初从我的桌面推出存储库到github它知道遥控器,现在它抱怨权限被拒绝了吗?
c ×2
algorithm ×1
bash ×1
bit-fields ×1
git ×1
github ×1
math ×1
permissions ×1
shell ×1
sizeof ×1
tesselation ×1