下面为在编程中出现的问题及解决的方案:
1、warning: incompatible implicit declaration of built-in function ‘printf’
解决方法:在头文件中添加#include,问题可以出现在没有添加printf的文件,gcc编译的时候就在/usr/include/中查找printf的头文件,所有能够编译成功。
2、undefined reference to 'pthread_create'问题的解决
解決方法:pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthread.a。
所以在使用pthread_create()创建线程,以及调用 pthread_atfork()函数建立fork处理程序时,需要链接该库。
在编译中要加 -lpthread参数
gcc -o pthread pthread.c -lpthread
另外有两个问题:
1、gcc编译的时查找头文件的目录顺序?
2、是否有相应的文档(解决方法)来处理这些gcc的所有警告和错误?
3、下面两段的问题:
#include<stdlib.h> #include<stdio.h> #include<string.h>
int main(void){ char s[]="12345678"; char d[]="abcde"; printf("&s=%p,&d=%p\n",&s,&d); printf("s=%s,d=%s\n",s,d); strcpy(d,s); printf("s=%s,d=%s\n",s,d); printf("&s=%p,&d=%p\n",&s,&d); return 0; }
|
(1)、当数组d的长度大于、等于或小于数组s的长度1时没有问题。
(2)、当数组d的长度小于数组s的长度大于1时,会出现两种问题,当数组s的长度小于9时没有问题,如果大于9则出错,一切问题源于strcmp函数。
阅读(1727) | 评论(0) | 转发(0) |