#include <stdio.h>
main() {
printf("hello world\n");
}
有参数构造:
# include <stdio.h>
int main(void)
{
int Max(int x, int y); //对Max函数的声明, x、y称为形参
int a = 1, b = 2;
printf("max = %d\n", Max(a, b)); //a、b称为实参
return 0;
}
//定义Max函数
int Max(int x, int y)
{
int z; //函数体中的声明部分
if (x > y) //下面是语句部分
{
z = x;
}
else
{
z = y;
}
return (z); //返回z的值给主调函数使用
}
main带参数的函数
int main(int argc,char *argv[],char *envp[])
{
int i = 0;
for (i = 0; i < argc; i++)
{
printf("%s\n", argv[i]);
}
system("pause");
return 0;
}
main函数的三个参数:
第一个参数 argc ,用于存放命令行参数的个数。
第二个参数 argv,是个字符指针的数组,每个元素都是一个字符指针,指向一个字符串,即命令行中的每一个参数。
第三个参数 envp ,也是一个字符指针的数组,这个数组的每一个元素是指向一个环境变量的字符指针。
生成so文件
第一步:
将文件Hello.c编译成一个动态库:libHello.so,执行命令如下:
$ gcc Hello.c -fPIC -shared -o libHello.so
-shared: 该选项指定生成动态连接库(让连接器生成T类型的导出符号表,有时候也生成弱连接W类型的导出符号),不用该标志外部程序无法连接,相当于一个可执行文件;
-fPIC:PIC指Position Independent Code,表示编译为位置独立的代码,不用此选项的话编译后的代码是位置相关的,所以动态载入时是通过代码拷贝的方式来满足不同进程的需要,而不能达到真正代码段共享的目的。
错误:只允许在 C99 模式下使用‘for’循环初始化声明 用gcc编译出现
而c99的模式允许了
你的c编译器不是c99标准
for(int i=0;;)
所有你应该这样改
int i;
for(i=0;;);