prev up next   top/contents search

comp.lang.c FAQ 列表· 问题 1.31

Q这本书里的代码,就是直接抄的,但就是编译不过

int f()
{
	char a[] = "Hello, world!";
}


A也许你用的是旧的、非 ANSI 的编译器,它不允许初始化“自动聚合体”(即非静态局部数组、结构或联合体)。你可以采取四种方法来解决:

  1. 如果数组不会被写入,或者在后续调用中不需要新的副本,你可以将其声明为静态(或者也许是全局变量)。
  2. 如果数组不会被写入,你可以用指针替换它
    	f()
    	{
    		char *a = "Hello, world!";
    	}
    
    你总是可以初始化局部char *变量指向字符串字面量(但请参阅问题 1.32)。
  3. 如果以上条件都不满足,你必须通过strcpy在函数被调用时手动初始化数组
    	f()
    	{
    		char a[14];
    		strcpy(a, "Hello, world!");
    	}
    
  4. 获取一个兼容 ANSI 的编译器。

另请参阅问题 11.29a


prev up next   contents search
关于此 FAQ 列表   关于 Eskimo   搜索   反馈   版权

Eskimo North 托管