现在的位置: 首页 > 综合 > 正文

vs2010转ubuntu总结

2012年10月22日 ⁄ 综合 ⁄ 共 1932字 ⁄ 字号 评论关闭

1.Math.h 问题:

在LINUX下面编辑*.c文件,你虽然已经使用#include<math.h>,但在使用sqrt(), pow()函数还是会碰到问题。
用GCC编译不带-lm选项时会得到这样的错误提示:

undefined reference to `pow'

如果你使用math.h里面的函数直接自己填充数值的话,是没有问题的。如pow(2, 3), 因为编译器编译的时候直接这个

值计算出来了。但是函数里面带有变量的话,如:pow(2, i).编译的时候无法直接算出这个值的,编译的时候需要连接

math.h。因此GCC编译带 -lm里面选项就会通过。

参考资料:

http://stackoverflow.com/questions/4174080/problem-using-pow-in-c

 

2.关于g++ memcpy’ was not declared in this scope解决方法

使用如下2行即可
#include<iostream>
#include <cstring>

地址:http://blog.chinaunix.net/u1/38994/showart_2187440.html

3.关于abc函数转换出现歧义问题:

我的abs()有歧义,abs()的候选函数有上面列出的三个。但是我的代码里明明用的是int型的,编译器应该可以重载的阿。
代码太长了,这里我把示意性代码列出如下:
#include <iostream>
#include <cmath>
int a;
cin >> a;
a = abs(a);
如果把 a = abs(a) 改为 a = fabs(a) 时就可以了。不明白为什么:

问题已解决:如下
最佳解决方案:
c语言书本上说,数学函数除了求整数的绝对值函数abs()之外<abs() 定义在stdlib.h中>,其余的函数都在头文件 math.h 中定义,包括对浮点数求绝对值的函数fabs()。
c++中,包含的相应的头文件为,原则是前面加c,同时去掉.h 。
例如:
#include <cstdlib>对应        #include <stdlib.h>
#include <cmath>对应        #include <math.h>

于是,在c++里       
                使用abs()就用 #include <cstdlib>
                使用fabs()就用 #include <cmath>

 

4.expected unqualified-id before ')' token" - fstream 问题

解决:1.将#include<fstream>去掉,用C函数的文件读写替换。

 

5.枚举值检索不到如:

typedef enum{
    DEVFREE = 0,
    DEVBUSY
}USESTATE;

解决:Symbol 'DEVBUSY' could not be resolved    EnumTest.cpp    /EnumTest    line 11    Semantic Error,不用管,可以直接输出。

 

枚举前置定义检测不到,如下:

http://stackoverflow.com/questions/71416/forward-declaring-an-enum-in-c

http://blog.csdn.net/lizhongkan/article/details/6051580


http://www.linuxsky.org/doc/dev/200802/248.html

 

6. size_t  -> ssize_t

7. #include<map>  后仍提示找不到map,加上 using namespace std;   即可。

 8. memset不识别,引用<cstring> 即可。

 

9.bits/sstream.tcc :112: error: expected unqualified-id before '(' token 解决方法


#include <sstream>
之前加入
#undef max
#undef min
如下
#include ***
#undef max
#undef min
#include <sstream>
该错误主要是由于有些系统中已经定义了max,min宏。

http://www.cnitblog.com/ictfly/archive/2009/09/08/61305.html

10. ceilf() -> ceil()

11. Sleep()->  sleep()     #include<ctime>

12.timer 使用问题:Symbol 'CLOCK_MONOTONIC' could not be resolved

http://stackoverflow.com/questions/8881617/constants-not-loaded-by-compiler

抱歉!评论已关闭.