点击查看Evernote原文。
#@author: gr
#@date: 2014-07-20
#@email: forgerui@gmail.com
对g++编译器不是特别熟悉,希望借此熟悉一下.
Contents
-
要使用strlen需要加入
#include <cstring>
. -
g++编译器中的嵌套模板之间需要放一个空格.如下:
//o_O awesome!! <List<char> >中间应该有个空格
List<char> l1 = make<List<char>>("hello");
//~_~ correct
List<char> l2 = make<List<char> >("hello");
Template <typename Container>
Container make(const char* s){
return Container(s, s+strlen(s));
}
- 使用迭代器时,定义的时候需要加上typename;
//前面需要加上typename
for (typename List<char>::iterator it = l2.begin(); it != i2.end(); ++it);
-
在
visual studio
中,shared_ptr
通过#include <memory>
便可以使用,使用的时候可以使用std::shared_ptr
或者std::tr1::shared_ptr
.
在g++
中,需要#include <tr1/memory>
,并且使用的时候,必须使用std::tr1::shared_ptr
. -
gcc -Wall
生成所有警告信息。 -
gcc -M
生成文件关联的信息。包含目标文件所依赖的所有源代码你可以用gcc -M hello.c
来测试一下,很简单。
-
gcc -MM
和上面的那个一样,但是它将忽略由#include造成的依赖关系。 -
依赖问题:
kalman.o:在函数‘main’中:kalman.cpp:(.text+0x18b):对‘cv::KalmanFilter::KalmanFilter(int, int, int, int)’未定义的引用
编译时可以使用
g++ -c kalmane.cpppkg-config --cflags opencv
同样链接时可以使用
g++ -o kal kalman.cpppkg-config --libs opencv