本文目录一览:
- 1、C语言 实现int128位+-*/ 别给我c++的什么类我不会c++
- 2、使用string头文件怎么用gcc编译
- 3、gcc库文件和头文件搜索路径
- 4、gcc去哪找头文件?
- 5、gcc编译器头文件处理
- 6、gcc编译时所用的头文件是哪个
C语言 实现int128位+-*/ 别给我c++的什么类我不会c++
有一个很神奇的类型是__int128这个可以应该可以实现你的想法,
讲道理的话,编译器的gcc是不支持__int128这种数据类型的,比如在codeblocks 16.01/Dev C++是无法编译的,但是提交到大部分OJ上是可以编译且能用的。C/C++标准。IO是不认识__int128这种数据类型的,因此要自己实现IO,其他的运算,与int没有什么不同。
但是官方上写了GCC提供了两种128位整数类型,分别是__int128_t和__uint128_t,分别用于声明有符号整数变量和无符号整数变量。
由于这种大整数无法使用函数printf()输出其值,所以自己做了一个整数转字符串函数write(),用于实现128位整数的输出。
亲测oj和洛谷可以AC
加法模板如下
#include bits/stdc++.h
using namespace std;
inline __int128 read()
{
__int128 x=0,f=1;
char ch=getchar();
while(ch'0'||ch'9')
{
if(ch=='-')
f=-1;
ch=getchar();
}
while(ch='0'ch='9')
{
x=x*10+ch-'0';
ch=getchar();
}
return x*f;
}
inline void write(__int128 x)
{
if(x0)
{
putchar('-');
x=-x;
}
if(x9)
write(x/10);
putchar(x%10+'0');
}
int main()
{
__int128 a = read();
__int128 b = read();
write(a + b);
return 0;
}
使用string头文件怎么用gcc编译
使用gcc编译string头文件的步骤如下:
1.打开终端并输入gcc -v查看gcc的版本号,以确保安装了正确的编译器。
2.在终端中输入gcc -c main.c来编译main.c文件,该文件包含要使用的string.h头文件。
3.使用gcc -o main main.o来链接main.o文件,它是编译main.c文件时输出的中间文件。
4.最后,使用gcc -o main main.o -I/usr/include/string.h来指定要使用的头文件所在的位置。
5.最后,使用./main来执行程序,查看结果。
gcc库文件和头文件搜索路径
一、compile-time库文件搜索路径
1.如果编译时指定了-L选项,就优先到-L指定的路径去查找库进行连接;
2.查找GCC的环境变量LIBRARY_PATH
3.到/bin /usr/lib /usr/local/lib去查找。这几个搜索路径在gcc下是默认的。
所以当我们要让自己添加的库文件让gcc能搜索到,有两种方法,一种就是用-L指定,一种就是将库复制到以上几个gcc默认搜索路径。
二、run-time库搜索路径
1.编译时用-Wl, -rpath指定的路径
Ex:
arm-none-linux-gnueabi-gcc -o helloword_arm helloword.c -Wl,-dynamic-linker=/system/lib/ld-linux.so.3,-rpath,/system/lib/-gccint128头文件
2.环境变量LD_LIBRARY_PATH指定的路径
3./etc/ld.so.conf指定的路径
4.默认的动态搜索库路径/lib /usr/lib
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下:
LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径,例如,指定gcc编译需要用到的动态链接库的目录。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):-gccint128头文件
export LIBRARY_PATH=LIBDIR1:LIBDIR2:$LIBRARY_PATH
LD_LIBRARY_PATH环境变量用于在程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径,注意,LD_LIBRARY_PATH中指定的路径会在系统默认路径之前进行查找。设置方法如下(其中,LIBDIR1和LIBDIR2为两个库目录):-gccint128头文件
export LD_LIBRARY_PATH=LIBDIR1:LIBDIR2:$LD_LIBRARY_PATH
举个例子,我们开发一个程序,经常会需要使用某个或某些动态链接库,为了保证程序的可移植性,可以先将这些编译好的动态链接库放在自己指定的目录下,然后按照上述方式将这些目录加入到LD_LIBRARY_PATH环境变量中,这样自己的程序就可以动态链接后加载库文件运行了。-gccint128头文件
区别与使用:
开发时,设置LIBRARY_PATH,以便gcc能够找到编译时需要的动态链接库。
发布时,设置LD_LIBRARY_PATH,以便程序加载运行时能够自动找到需要的动态链接库。
三、几个重要的命令
1)ldd bin_name
可以查看编译出来的可执行文件依赖的库。部署程序时,我们要把这些库拷贝出来,然后将这些库连同可执行文件拷贝到新的机器上,在/etc/ld.so.conf.d下添加对应的库文件搜索路径即可。
2.ldconfig命令
搜索/lib和/usr/lib以及/etc/ld.so.conf下列出来的所有路径的库,然后创建动态库的cache文件。当程序需要搜索库时就会搜索ld.so.cache里列出来的库。
所以当我们向系统添加新的库文件时,除了需要把库文件烤到/usr/local/lib等指定位置外,还需ldconfig一下来更新cache文件。
四、gcc头文件的搜索路径
1.优先搜索-I指定的路径
2.查找GCC的环境变量C_INCLUDE_PATH/CPLUS_INCLUDE_PATH/OBJC_INCLUDE_PATH指定的路径
3.查找默认的搜索路径/usr/include /usr/local/include
所有GCC的环境变量,我们都可以GCC的原有搜索路径上上面添加进我们自己的路径,例如
#增加.so搜索路径
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home//lib
#增加.a搜索路径
LIBRARY_PATH=$LIBRARY_PATH:/home/lib
#增加bin搜索路径
export PATH=$PATH:/home/bin
#增加GCC的include文件搜索路径
export C_INCLUDE_PATH=$C_INCLUDE_PATH:/home/include
-wall -pedantic
-wall编译时显示所有的警告信息,可以增加程序的健壮性和可移植性
-pedantic,以符合ANSI/ISO C 标准列出所有警告
gcc去哪找头文件?
gcc默认会到/usr/include下面去找头文件, 那就使用绝对路径吧! 利用系统的环境变量。 对于头文件的搜索路径: C_INCLUDE_PATH=your include path; export C_INCLUDE_PATH 对于库文件的搜索路径: LIBRARY_PATH=your lib path; export LIBRARY_PATH 对于链接程序ld使用的库文件搜索路径: LD_LIBRARY_PATH=your ldlib path; export LD_LIBRARY_PATH gcc -I/usr/local/headers/ld:ld --verbose | grep SEARCH 你echo $PATH, 看看/usr/local/include是不是 放在/usr/include前面了。 PATH环境变量只是可执行程序的查找路径吧 ?gcc的include好象跟这个没关系-gccint128头文件
gcc编译器头文件处理
两次相对比一下,第二次增加了以下函数的实现,这部分是要编译成机器指令的,所以第二次这部分相当于是增加的。
int printf (const char *__format, ...)
{
register int __retval;
__builtin_va_list __local_argv; __builtin_va_start( __local_argv, __format );
__retval = __mingw_vprintf( __format, __local_argv );
__builtin_va_end( __local_argv );
return __retval;
}
那第二次减少了哪些呢?一点都没有,因为stdio这个头文件声明的函数和变量,都是在一个库中实现的,根本就不会包含在你的exe中,所以加不加stdio头文件没有区别。
要想验证这个也很简单:代码1
#include stdio.h
int main(){return 0;}
代码2:
int main(){return 0;}
比较这两次产生的exe是否一致即可。
注意,不能带有-g选项,-g选项会生成一些额外的调试信息
gcc编译时所用的头文件是哪个
gcc 编译器对 C 语言源程序进行编译时,它会根据你的源程序中的:#include 的头文件(例如:最常使用的:stdio.h、string.h、stdlib.h 等),来进行使用和编译。