关于C语言的两个问题
时间:2010-12-06 来源:zm_wl
今天一位刚毕业的同事问了我2个问题:
问题一:
他在C程序中使用了pow函数,也引用了头文件 math.h,但是gcc编译程序 的时候报错:undefined reference to `pow'
解释:
这让我想起了我刚开始学C的时候也出现过这个问题,就是编译的时候没 有指定具体的库
即gcc 需要加上一个-lm的选项,才能完成编译。
-lm=link math
-l指代的是链接一个库文件
m 指代的是math数学库文件,也就是libm.so
pow是math库里函数,linux下编译器默认没有链接该数学库,故报错 所以必须手动添加编译-lm选项 头文件仅对接口进行描述,但头文件不是负责进行符号解析的实体。连接 器也是看不到头文件的 用预处理器指令表示需要用到XX库,连接器也可以不管你
问题二: 关于输出格式化%.0f表示什么 解释: 格式输出一个浮点数,但是去掉小数点后面的数 %.0f为格式控制符表示浮点数输出整数位,.0为小数位位数
pow是math库里函数,linux下编译器默认没有链接该数学库,故报错 所以必须手动添加编译-lm选项 头文件仅对接口进行描述,但头文件不是负责进行符号解析的实体。连接 器也是看不到头文件的 用预处理器指令表示需要用到XX库,连接器也可以不管你
问题二: 关于输出格式化%.0f表示什么 解释: 格式输出一个浮点数,但是去掉小数点后面的数 %.0f为格式控制符表示浮点数输出整数位,.0为小数位位数
相关阅读 更多 +