小编pak*_*ade的帖子

为什么可以打印小于DBL_MIN的双数?

我分配0.4543543234343654632452452525254e-323给一个double变量a并打印它,虽然它小于DBL_MIN,但它仍然可以分配和打印.

DBL_MAX: 1.79769e+308
FLT_MAX: 3.40282e+38
DBL_MIN: 2.22507e-308
FLT_MIN: 1.17549e-38
a: 4.94066e-324
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

c++ double range ieee-754

5
推荐指数
1
解决办法
258
查看次数

Ubuntu系统中链接动态库时未定义的引用

我在我的Ubuntu系统中写了这样的代码:

我的.h

#include <stdio.h>
int a;
int set(void);
Run Code Online (Sandbox Code Playgroud)

库文件

#include "my.h"
int set(void) {
  a = 100;
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

主程序

#include "my.h"

int main(void){
  set();
  printf("a = %d\n", a);
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

然后我使用以下命令来构建它们:

gcc -shared -fPIC -o libmy.so -I. lib.c

gcc -L. -lmy -I. -o test main.c
Run Code Online (Sandbox Code Playgroud)

当我构建测试时,我收到错误信息:

main.c:(.text+0x5):undefined reference to 'set'
collect2: error: ld returned 1 exit status
Run Code Online (Sandbox Code Playgroud)

但是当我使用在 Fedora23 和 Fedora24 中运行的相同代码时,它运行良好。

所以我想知道为什么会发生这种情况?Ubuntu系统有什么限制吗?

ubuntu linker dynamic-library

2
推荐指数
1
解决办法
4736
查看次数

标签 统计

c++ ×1

double ×1

dynamic-library ×1

ieee-754 ×1

linker ×1

range ×1

ubuntu ×1