在C++中,可以使用命名空间来保持独立组在同一代码库中工作,从而无意中创建具有相同名称的函数,从而产生冲突.我的问题是,在命名空间的概念出来之前,如何在C中模拟命名空间.
当我使用gcc进行发布构建时(即我没有指定-g),我似乎仍然在二进制文件中使用符号,并且必须使用strip它们来删除它们.事实上,我仍然可以断点函数并在gdb中获得回溯(尽管没有行号).
这让我感到惊讶 - 任何人都能解释为什么会这样吗
例如
#include <stdio.h>
static void blah(void)
{
printf("hello world\n");
}
int main(int argc, char *argv[])
{
blah();
return 0;
}
Run Code Online (Sandbox Code Playgroud)
gcc -o foo foo.c
nm foo | grep blah:
08048374 t blah
所以我想创建简单的pcm到mp3 C++项目.我希望它使用LAME.我喜欢LAME,但它真的是biiig.所以我需要某种OpenSource,使用纯粹的代码和纯粹的蹩脚代码工作流简化器.所以说我用PCM和DEST文件给它文件.打电话给像
LameSimple.ToMP3(file with PCM, File with MP3 , 44100, 16, MP3, VBR);
矿石这样的东西在4-5行(应该存在的例子)和我有我需要的vhat应该是轻,简单,powerfool,opensource,crossplatform.
有这样的事吗?!?
我已经尝试使用gSOAP访问Web服务(例如,使用提供的WSDL生成C存根,然后在应用程序中使用它们).但是,我发现生成的.c和目标文件非常大(几兆字节),这是我工作的嵌入式环境中的一个问题.
您是否知道任何更简单的SOAP库,或者我是否必须回归到通用XML生成器和解析器(如ezXML)?
在Linux应用程序中,我使用管道在线程之间传递信息.
使用管道的想法是我可以使用poll(2)一次等待多个管道.这在实践中运作良好,我的线程大多数时间都在睡觉.如果有事可做,他们只会醒来.
在用户空间中,管道看起来就像两个文件句柄.现在我想知道这些管道在OS端使用了多少资源.
顺便说一句:在我的应用程序中,我只是偶尔发送单个字节.把我的管道想象成简单的消息队列,它允许我唤醒接收线程,告诉他们发送一些状态数据或终止.
我正在阅读http://embeddedgurus.com/embedded-bridge/2010/03/different-bit-types-in-different-registers/,其中说:
通过读/写位,固件可在需要时设置和清除位.它通常首先读取寄存器,修改所需的位,然后将修改后的值写回
我已经遇到了这个问题,同时保留了一些由老盐嵌入式人员编写的生产代码.我不明白为什么这是必要的.
当我想设置/清除一点时,我总是只是或者使用位掩码.在我看来,这解决了任何线程安全问题,因为我假设设置(通过赋值或使用掩码进行设置)寄存器只需要一个周期.另一方面,如果您首先读取寄存器,然后修改,然后写入,读取和写入之间发生的中断可能导致向寄存器写入旧值.
那么为什么读 - 修改 - 写?还有必要吗?
如果这是一个坏主意,如何在函数中分配内存?
我正在玩递归并完成这个简单的功能.我假设它会打印9-0到stdout,但是,它打印0-9.我看不出这是怎么回事.
int main()
{
rec(10);
return 0;
}
int rec(int n){
if(n > 0)
printf("%d\n", rec(n -1));
return n;
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试初始化一个unsigned long long int类型.但编译器抛出错误
"error: integer constant is too large for "long" type ".
初始化如下所示:
unsigned long long temp = 1298307964911120440;
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道问题是什么,并提出相同的解决方案.
我有一些不可变的数据结构,我想使用引用计数来管理,在SMP系统上的线程之间共享它们.
这是发布代码的样子:
void avocado_release(struct avocado *p)
{
if (atomic_dec(p->refcount) == 0) {
free(p->pit);
free(p->juicy_innards);
free(p);
}
}
Run Code Online (Sandbox Code Playgroud)
是否atomic_dec需要在它的内存屏障?如果是这样,什么样的记忆障碍?
附加说明:应用程序必须在PowerPC和x86上运行,因此欢迎任何特定于处理器的信息.我已经知道GCC原子内置.至于不变性,refcount是唯一在对象持续时间内发生变化的字段.