我在我的本地仓库中有一个名为develop的分支,我想确保当我将它推到原点时它与origin/master合并.目前,当我将它添加到远程开发分支时.
我怎样才能做到这一点?
是Java并发在实践中是否仍然有效?我想知道本书中描述的想法,概念和实现是否仍然符合最新的Java版本.
我问,因为最新版本是在2006年完成的.
今天我不得不使用这个basename()功能,而man 3 basename(这里)给了我一些奇怪的信息:
笔记
有两个不同版本的basename() - 上面描述的POSIX版本,以及GNU版本,后者可以使用
#define _GNU_SOURCE
#include <string.h>
我想知道这#define _GNU_SOURCE意味着什么:它是否污染了我用GNU相关许可证编写的代码?或者它只是用于告诉编译器类似" 嗯,我知道,这组函数不是POSIX,因此不可移植,但我还是想用它 ".
如果是这样,为什么不给人们不同的标题,而不是必须定义一些模糊的宏来获得一个函数实现或另一个?
有些东西也让我感到困惑:编译器如何知道哪个函数实现与可执行文件链接?它也使用这个#define吗?
有人有一些指示可以给我吗?
如果我想在另一个(在C中)复制一个结构,那么pro&con's是什么:
struct1 = struct2;
Run Code Online (Sandbox Code Playgroud)
VS
memcpy(&struct1, &struct2, sizeof(mystruct_t));
Run Code Online (Sandbox Code Playgroud)
它们是等价的吗?性能或内存使用有区别吗?
我正在尝试使用GCC编译特定程序时修复两个警告.警告是:
警告:解除引用类型惩罚指针将破坏严格别名规则[-Wstrict-aliasing]
而这两个罪魁祸首是:
unsigned int received_size = ntohl (*((unsigned int*)dcc->incoming_buf));
Run Code Online (Sandbox Code Playgroud)
和
*((unsigned int*)dcc->outgoing_buf) = htonl (dcc->file_confirm_offset);
Run Code Online (Sandbox Code Playgroud)
incoming_buf和outgoing_buf定义如下:
char incoming_buf[LIBIRC_DCC_BUFFER_SIZE];
char outgoing_buf[LIBIRC_DCC_BUFFER_SIZE];
Run Code Online (Sandbox Code Playgroud)
这似乎与我一直在研究的那个警告的其他例子略有不同.我宁愿修复问题而不是禁用严格别名检查.
有很多建议要使用工会 - 这个案例可能是一个合适的工会?
我目前正在阅读PostgreSql代码.以下是缓冲区管理器的摘录:
static void WaitIO(volatile BufferDesc *buf);
static bool StartBufferIO(volatile BufferDesc *buf, bool forInput);
static void TerminateBufferIO(volatile BufferDesc *buf, bool clear_dirty,
Run Code Online (Sandbox Code Playgroud)
我知道volatile关键字通常用于设备驱动程序和嵌入式系统.关键字有解释.
当在类型定义中使用关键字volatile时,它会向编译器指示它应如何处理变量.它主要告诉编译器,由于程序外部的操作或当前执行行,变量的值可能随时发生变化.(来源)
那么为什么某些函数参数被声明为volatile?我不希望DMA改变指针位置.那么这里发生了什么?
我是新用的GitHub.我正在尝试从用户仓库克隆我的第一个文件.我一直收到这个错误:
Permission denied (publickey).
fatal: Could not read from remote repository
当我检查以验证公钥是否附加到我的GitHub帐户时,使用此命令:
ssh-add -1
我收到此错误:
The agent has no identities.
我也试过这个:
ssh-add ~/.ssh/id_rsa
它告诉我:
Identity added
我还确保我的笔记本电脑的SSH密钥已添加到我的GitHub帐户中.我错过了哪些步骤?
我扫描了互联网 - 我迷路了.
我找了一会儿却找不到答案(也许我不知道该看什么).
我们有一个主库,它是一个自己的存储库(让我们称它为Lib)它包含我们的大多数模块和子模块.我们还说它的大小为2GB ......
现在我们有很多项目,例如:ProjA,ProjB,ProjC,每个项目都使用Lib作为子模块.
ProjA
- Lib(分支:master,commit#:1)
ProjB
- Lib(分支:其他,提交#:2)
ProjA
- Lib(分支:master,commit#:4)
因此,虽然我能够保持每个项目引用正确的库(aka子模块)版本.我现在有3*2GB = 6GB的THE SAME子模块.
有没有办法在保持引用的正确文件/版本控制的同时引用单个子模块?
例如.
ProjA
Lib/base_lib.h(v1.0)
LIB/file_only_in_this_commit
ProjB
- Lib/base_lib.h(v1.0)
ProjC
- Lib/base_lib.h(v1.1)
谢谢!
我正在使用 GCC 在 C99 上为嵌入式环境进行开发。我制作了一个小型库来处理循环缓冲区和队列。它实现并处理包含缓冲区和所需元数据的基本结构的实例。
struct circbuf_u8_st {
const uint8_t buffer_num_elems;
uint8_t head;
uint8_t tail;
uint8_t * buffer;
};
Run Code Online (Sandbox Code Playgroud)
有时,它struct被用作volatile全局变量,因为它用于生成数据的中断例程和消耗数据的主循环之间的通信。
但有时struct被用作非volatile本地的,例如当主循环的一部分生成稍后在同一主循环上使用的数据时。
struct有时存在有时volatile不存在意味着任何处理该参数的函数都struct需要两个版本,即参数volatile和非volatile参数。这是一个维护问题:在一个版本中所做的任何更改都必须在另一个版本中重复。例如,
void circbufu8_reset(struct circbuf_u8_st *cb);
void circbufu8_v_reset(struct circbuf_u8_st volatile *cbv);
Run Code Online (Sandbox Code Playgroud)
我可以选择volatile所有内容的版本,因为那总是正确的。但这也意味着对volatile我想避免的非案例的悲观。
因此,一个可能的解决方案是声明 aunion与volatile/nonvolatile成员,并声明struct成员具有 that 的类型union。
union un_dual_volatile_u8 {
uint8_t volatile v;
uint8_t nv;
};
Run Code Online (Sandbox Code Playgroud)
这将有助于摆脱每个函数有两个版本的问题。但是,这真的有帮助吗?这样的函数将(可能)具有什么语义?我的理解是,编译器必须使用 所需的最严格的语义union,因此实际上这只是 …
我已经通过了文档
git log --format
但我没有看到使用命令 git log --format 提取 Change-Id 的方法(如下面的 Change-Id 示例所示:Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b)。
$ git log -1
commit 29a6bb1a059aef021ac39d342499191278518d1d
Author: A. U. Thor <author@example.com>
Date: Thu Aug 20 12:46:50 2009 -0700
Improve foo widget by attaching a bar.
We want a bar, because it improves the foo by providing more
wizbangery to the dowhatimeanery.
Bug: #42
Change-Id: Ic8aaa0728a43936cd4c6e1ed590e01ba8f0fbf5b
Signed-off-by: A. U. Thor <author@example.com>
CC: R. E. Viewer <reviewer@example.com>
Run Code Online (Sandbox Code Playgroud)
有没有办法做到这一点?提前致谢!
c ×5
git ×3
parameters ×2
volatile ×2
cloning ×1
concurrency ×1
git-branch ×1
git-push ×1
github ×1
gnu ×1
java ×1
java-7 ×1
java-8 ×1
memcpy ×1
posix ×1
struct ×1
type-punning ×1
unions ×1