Category: Programming
Posted by: murj

google一下libprocps,结果数少得可怜。但是提到top, ps等命令,想必没有人会感到陌生。事实上,这一系列命令都来自于procps,procps内部实现了一个库,就是libprocps,这个库提供一系列解析/proc文件系统的API。但是,没有看到有libprocps的API说明文档,也很少有别的软件依赖这个库,大概是procps自身提供的工具太经典了,都没有开发类似工具的需求。

看来如果要使用libprocps,只能自己看代码了。

Technorati Tags: ,

Category: Programming
Posted by: murj

To get a complete list of system-specific predefined macros, simplily use the following command(assuming you do not have foo.h):

$ touch foo.h; cpp -dM foo.h

Note that there are other three types predefined macros, including standard predefined macros, common predefined macros and C++ named operators. Check the C Preprocessor's online document yourself for details.

Category: Programming
Posted by: murj

就像标题所说的那样,ISO C++ 不支持 long long 类型的数据定义。先看一个我随意写就的一个例子:

int main(int argc, char *argv[])
{
    long long int ll = 2;
    std::cout << ll << std::endl;
    return 0;
}

下面是一些编译命令和结果,假设文件名为 longlong.cpp.

murj@moon:~/tmp/prog$ g++ -Wall longlong.cpp
murj@moon:~/tmp/prog$ g++ -Wall -pedantic longlong.cpp 
longlong.cpp: In function `int main(int, char**)':
longlong.cpp:5: error: ISO C++ does not support `long long'
murj@moon:~/tmp/prog$ g++ -Wall -pedantic -Wno-long-long longlong.cpp

结论:
如果使用 pedantic 选项,则需要配合 Wno-long-long 选项才能去掉 ISO C++ 对 long long 的限制;如果不使用 pedantic 选项,自然可以编译成功,但因为 pedantic 总是试图使用标准的 C/C++ 定义来检查代码的合法性,这对于编写符合标准、可移植性强的代码有好处,所以还是前一种方法好