摘要:
用execvp实现时,运行adb,如果adb 服务没有启动,会启动adb服务,启动adb服务时,pipe返回的管道在读的时候堵塞了。查看了popen的源码,发现popen是用sh -c来执行的,避免了这个问题不知道sh -c做了些什么操作,使得popen可以避免这个问题代码如下: 1 #ifndef... 阅读全文
摘要:
手头一个项目,需要编写项目的makefile多目录结构:csource/├── common│ └── sqlite3├── inc│ ├── curl│ ├── lua│ └── Protection├── lib│ ├── arm│ └── linux├── obj├── out│ ├── ar... 阅读全文
摘要:
近来一个新的项目需要使用到http。本来用socket来写一个的,后来发现功能实在太简单,有点捉襟见肘。于是改用libcur来做。首先下载libcur的源码,然后配置:1 ./configure --prefix=$HOME/csource/linux/ CFLAGS='-O2 -m32 -fPIC... 阅读全文
摘要:
代码如下:打开USB Hub设备之后,返回句柄hHubDevice,然后使用EnumerateHubPorts来枚举Hub的端口。疑问在代码的中文注释中。 1 bool CUsbEnumHub::EnumerateHubPorts(HANDLE hHubDevice, ULONG NumPorts, UsbItem* pRootItem) 2 { 3 ULONG index; 4 BOOL bSuccess; 5 PUSB_NODE_CONNECTION_INFORMATION_EX connectionInfo; 6 ... 阅读全文
摘要:
IDE生成的代码,运行几次之后开始出现以下这个错误Error: must call SetScrollSizes() or SetScaleToFitSize() before painting scroll view.该错误非常傻逼,因为并未修改该IDE生成的任何代码,只是运行几次之后就出现了。刚开始我以为是IDE出错,重启,故障依旧。后来调试发现,原来是在程序初始化时出错了。程序初始化时从注册表加载数据,然后在OnDraw在OnInitialUpdate运行了,就出现了这个错误。解决办法就是不要用IDE生成的初始化加载注册表的代码在CXXApp里面注释掉下面这行代码LoadStdProfi 阅读全文
摘要:
1 class Widget {2 };3 4 Widget w();如上所示代码,并没有声明一个class Widget w。这是声明了一个函数w,返回值是Widget,不接收参数输入。 阅读全文
摘要:
这个代码展示了private继承和模版的一个妙用: 1 #include <iostream> 2 #include <memory> 3 4 template<typename T> 5 class Counter { 6 public: 7 Counter() { count++; } 8 Counter(const Counter&) { count++; } 9 ~Counter() { --count; }10 public:11 std::size_t howMany(void) { return count; }12 private:1 阅读全文
摘要:
很好的一个示范例子,设计到类设计,模版,继承,封装。麻雀虽小五脏俱全,废话少说,来看代码:主程序: 1 #include <iostream> 2 3 #include "rcstring.h" 4 5 int main(void) 6 { 7 String s("hello"); 8 9 std::cout << s[2] << std::endl;10 11 std::cout << "Hello World!" << std::endl;12 13 return 0;1 阅读全文
摘要:
Windows编程,程序传参,参数分析代码本代码主要是将文件类型参数和非文件类型参数分开。 1 typedef std::vector<const TCHAR*> ParamVector; 2 3 void parseCommandLine(TCHAR * commandLine, ParamVector & paramVector) { 4 //params.erase(params.begin()); 5 //remove the first element, since that is the path of the executable (GetCommand... 阅读全文
摘要:
4.2 Item M6:自增(increment)、自减(decrement)操作符前缀形式与后缀形式的区别不论是 increment 或 decrement 的前缀还是后缀都只有一个参数。为了解决这个语言问题,C++规定后缀形式有一个 int 类型参数,当函数被调用时,编译器传递一个 0 做为 int 参数的值给该函数 1 #include <iostream> 2 3 class UInt{ 4 public: 5 explicit UInt(int i = 0) : m_int(i) { } 6 ~UInt() { } 7 UInt(const U... 阅读全文