我正在尝试在 gitk 中使用查找/“添加/删除字符串”/正则表达式选项。我尝试过的语法不起作用,我找不到描述它接受的正则表达式语法的文档。
我正在尝试同时匹配Modem_Wakup和Modem_UnWakeup。也不Modem_(Un)?Wakeup是
Modem_\(Un\)?Wakeup,也不是Modem_\(Un\)\?Wakeup,也不是任何其他明显的工作。我可以单独找到字符串,所以我知道应该有匹配项。
那么它使用什么语法呢?
我正在开发一个嵌入式项目,并尝试向某些代码添加更多结构,这些代码使用宏来优化对 USART 寄存器的访问。我想将预处理器 #define'd 寄存器地址组织到 const 结构中。如果我将结构定义为宏中的复合文字并将它们传递给内联函数,则 gcc 已经足够聪明,可以绕过生成的程序集中的指针并直接在代码中对结构成员值进行硬编码。例如:
C1:
struct uart {
volatile uint8_t * ucsra, * ucsrb, *ucsrc, * udr;
volitile uint16_t * ubrr;
};
#define M_UARTX(X) \
( (struct uart) { \
.ucsra = &UCSR##X##A, \
.ucsrb = &UCSR##X##B, \
.ucsrc = &UCSR##X##C, \
.ubrr = &UBRR##X, \
.udr = &UDR##X, \
} )
void inlined_func(const struct uart * p, other_args...) {
...
(*p->ucsra) = 0;
(*p->ucsrb) = 0;
(*p->ucsrc) = 0;
}
...
int main(){
... …Run Code Online (Sandbox Code Playgroud)