我有两个不相关的分支,主人和配置的git repo.我创建了配置,清除了所有文件,然后只放入配置文件中.现在我想在远程仓库上推送它,但因为它是新的,空分支(没有我所有更改的日志和原始分支的旧版本).
我怎样才能清除所有的历史并推动它?
在*NIX中实现tail的有效方法是什么?我提出(写)两个简单的解决方案,都使用一种循环缓冲区将线加载到圆形结构(数组|双向链接循环列表 - 为了好玩).我在busybox中看到了部分较旧的实现,从我的理解,他们使用fseek找到EOF,然后"向后"阅读东西.那里有更清洁,更快的东西吗?我在面试时被问到这个问题并且提问者看起来并不满意.先感谢您.
在查看Linux内核的双链循环列表的实现时,我发现了以下宏:
#define container_of(ptr, type, member) ({ \
const typeof( ((type *)0)->member ) *__mptr = (ptr); \
(type *)( (char *)__mptr - offsetof(type,member) );})
Run Code Online (Sandbox Code Playgroud)
这种方式的工作方式是返回指向结构的指针,只给出其成员之一的地址:
struct blabla
{
int value;
struct list_head *list;
}
Run Code Online (Sandbox Code Playgroud)
因此,只有指向list的指针,你才可以获得指向blabla的指针(并获得"value").对于我的问题,我如何使其尽可能便携(符合C89/C99的最佳情况?).由于使用了typeof(),这只是gcc.
这是我到目前为止所得到的:
#define container_of(ptr, type, member) ( \
(type *) (char *)(ptr)-offsetof(type,member)\
)
Run Code Online (Sandbox Code Playgroud)
此代码段是否符合ISO标准(因此应该能够在任何符合标准的编译器上编译)?
谁能帮助我从 Eclipse 的内部(嵌入式)浏览器中打开网页?我正在与浏览器并行运行 Linux(平铺窗口管理器)和 Eclipse-3.7.2,这很痛苦。
我希望它能够轻松地从我的代码中读取需求,同时读取代码。这可能是超级用户的问题,但它与 Eclipse 相关,所以我想我在这里有更好的答案。
提前致谢。

编辑:我正在运行 gentoo linux 和 swt-3.7.1,并在 xulrunner 支持中编译。
edit2:添加 gui 菜单图片以响应下面的答案。

我正在尝试为学校项目实施erathostenes的筛选,我决定使用位数组来实现.在我搜索材料时,我遇到了这三个宏,它们完美无缺,但我无法真正阅读(理解)它们.
#define ISBITSET(x,i) ((x[i>>3] & (1<<(i&7)))!=0)
#define SETBIT(x,i) x[i>>3]|=(1<<(i&7));
#define CLEARBIT(x,i) x[i>>3]&=(1<<(i&7))^0xFF;
Run Code Online (Sandbox Code Playgroud)
能否请你详细解释其中至少一个,我对C中的按位操作有基本的了解(基本上我知道它们"存在").
这会在另一个使用不同字节序的架构上工作吗?提前致谢.
我有一个linux配置文件,其格式如下:
VARIABLE=5753
VARIABLE2=""
....
Run Code Online (Sandbox Code Playgroud)
如何使用标准的linux工具或正则表达式获得VARIABLE2的fe值?(我需要解析文件中的目录路径).提前致谢.
我需要编写一个在bitarray上运行的宏,如下所示:
array[0] = number of bits in bitarray (integer)
array[1..n] = bits
Run Code Online (Sandbox Code Playgroud)
宏必须看起来像:
GetBit(pointer, index)
Macro *must* return 0,1 or call function similar to exit().
Run Code Online (Sandbox Code Playgroud)
这是我应该写的我(工作)内联函数版本的宏:
static inline unsigned long GetBit(BitArray_t array, unsigned long index)
{
if ((index) >= array[0])
exit(EXIT_FAILURE);
else
return (GetBit_wo_boundary_checks(array,index));
}
Run Code Online (Sandbox Code Playgroud)
这就是我所拥有的:
#define GetBit(array,index)\
(((index) < array[0] || exit(EXIT_FAILURE)) ?\
GetBit_wo_boundary_checks(array,index) : 0)
Run Code Online (Sandbox Code Playgroud)
我的问题是,这种具有做索引边界检查(ⅰ<P [0])和出口它试图与GetBit_wo_boundary_checks访问未定义的存储之前(P,I).
我认为我可以通过将退出置于短路评估条件来解决这个问题,但我得到:"无效使用void表达式".
当index高于array [0]中定义的最大值时,有没有办法使这个表达式宏透明地exit()?
我试图在 bash 中使用 getopts 来解析命令行参数,但如果没有匹配的参数(或没有给出 cmdline 参数),我无法弄清楚如何实现“默认”操作。
这是我迄今为止尝试过的略有简化的版本:
while getopts v:t:r:s:c: name;
do
case $name in
v) VALIDATE=1;;
t) TEST=1;;
r) REPORT=1;;
s) SYNC=1;;
c) CLEAR=1;;
*) print_help; exit 2;;
\?) print_help; exit 2;;
esac
done
Run Code Online (Sandbox Code Playgroud)
有没有(简单的)方法让它调用 print_help; 出口2;在不匹配的输入上?
我想试验终端和彩色输出,但同时我想让stdout/stderr重定向到文件,而不必处理这些转义序列.
有没有办法检查是否stderr从shell脚本中连接到终端?
两个问题:
代码:
struct sComputerNames
{
TCHAR *sName; // Using a pointer here to minimize stack memory.
};
TCHAR *sComputer = (TCHAR *) calloc(2048+1, sizeof(TCHAR));
struct sComputerNames sCN[4096] = {0};
_tcscpy(sComputer,L"PC1");
sCN[0].sName = (TCHAR *) calloc(128,sizeof(TCHAR));
_tcscpy_s(sCN[0].sName,128,sComputer);
// What is a better way to clear out the structure array?
for (DWORD i=0;i<4096;i++)
{
free(sCN[i].sName);
sCN[i].sName=NULL;
}
// Assign a new value
_tcscpy(sComputer,L"PC2");
sCN[0].sName = (TCHAR *) calloc(128,sizeof(TCHAR));
_tcscpy_s(sCN[0].sName,128,sComputer);
free(sCN);sCN=NULL; // Erroring here - how to free memory allocated by …Run Code Online (Sandbox Code Playgroud)