#include <stdio.h>
#include <stdlib.h> char *buf = (char *)malloc(BUFSIZ); setbuf(stdout,buf);
printf("Set STDOUT full buffer OK!\n");
setbuf(stdout,NULL);
printf("Set STDOUT no buffer OK!\n");

运行出错:

[zbq@centos6~/test]$ gcc buffer.c
buffer.c:: 错误:初始值设定元素不是常量
buffer.c:: 警告:数据定义时没有类型或存储类
buffer.c:: 警告:函数声明中出现形参名却未指定类型
buffer.c:: 错误:与‘setbuf’类型冲突
/usr/include/stdio.h:: 附注:‘setbuf’的上一个声明在此
buffer.c:: 错误:expected declaration specifiers or ‘...’ before string constant
buffer.c:: 警告:数据定义时没有类型或存储类
buffer.c:: 错误:与‘printf’类型冲突
buffer.c:: 附注:带有省略号的形参列表无法与空形参名列表声明匹配
buffer.c:: 错误:expected ‘)’ before ‘(’ token
buffer.c:: 错误:expected declaration specifiers or ‘...’ before string constant
buffer.c:: 警告:数据定义时没有类型或存储类
buffer.c:: 错误:与‘printf’类型冲突
buffer.c:: 附注:带有省略号的形参列表无法与空形参名列表声明匹配

后来百度得知原因是:

char *buf = (char *)malloc(BUFSIZ); 
全局变量buf 的初始化的值应该为一个常量,而malloc返回值是不定的(分配成功则返回指向被分配内存的指针,此存储区中的初始值不确定,否则返回空指针NULL),编译器在编译时无法断言start的初始值是多少,于是就自作主张的用0的代替了。这应该属于全局变量和局部变量的初始化的差异所在的地方。
只需将char *buf 改成局部变量就可以编译通过了。
http://zhidao.baidu.com/link?url=WS7VNppnzd1N3YKqL4R6e6jZwf6le_cjkeE5YoXh0pWOAd0oAzlYYM_VEQOzpn2loqufsXaECZBZPs9zBICLea

malloc error:初始值设定元素不是常量的更多相关文章

  1. 属性“dataProvider”有多个初始值设定项。(注意:“dataProvider”是“mx.charts.BarChart”的默认属性)。

    1.错误描写叙述 属性"dataProvider"有多个初始值设定项.(注意:"dataProvider"是"mx.charts.BarChart&q ...

  2. C#3.0新特性:隐式类型、扩展方法、自动实现属性,对象/集合初始值设定、匿名类型、Lambda,Linq,表达式树、可选参数与命名参数

    一.隐式类型var 从 Visual C# 3.0 开始,在方法范围中声明的变量可以具有隐式类型var.隐式类型可以替代任何类型,编译器自动推断类型. 1.var类型的局部变量必须赋予初始值,包括匿名 ...

  3. C#对象和集合初始值设定项

    对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属性分配值,而无需调用后跟赋值语句行的构造函数. 利用对象初始值设定项语法,你可为构造函数指定参数或忽略参数(以及括号 ...

  4. C#3.0新增功能06 对象和集合初始值设定项

    连载目录    [已更新最新开发文章,点击查看详细] 使用 C# 可以在单条语句中实例化对象或集合并执行成员分配. 对象初始值设定项 使用对象初始值设定项,你可以在创建对象时向对象的任何可访问字段或属 ...

  5. C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析与解决方法

    对于C#中异常:“The type initializer to throw an exception(类型初始值设定项引发异常)”的简单分析,目前本人分析两种情况,如下: 情况一: 借鉴麒麟.NET ...

  6. “System.Data.SqlClient.SqlConnection”的类型初始值设定项引发异常---解决方案

    "System.Data.SqlClient.SqlConnection"的类型初始值设定项引发异常 问题出在了 .net 的C:\WINDOWS\Microsoft.NET\Fr ...

  7. Memcached Memcached.ClientLibrary.SockIOPool”的类型初始值设定项引发异常

    又一次遭遇"xxx类型初始值设定项引发异常" 下了个c#实现的轻量级IoC开源项目,可是在本地使用时发现一运行就捕捉到"类型初始值设定项引发异常"的异常信息,调 ...

  8. “System.Transactions.Diagnostics.DiagnosticTrace”的类型初始值设定项引发异常[WCF]

    未处理System.TypeInitializationException  HResult=-2146233036  Message=“System.ServiceModel.Diagnostics ...

  9. System.Data.Entity.Internal.AppConfig 类型初始值设定项引发异常

    在一开始时将connectionStrings 写在了configSections之上如下图一示,结果抛出:“System.Data.Entity.Internal.AppConfig”的类型初始值设 ...

随机推荐

  1. php常用array函数

    http://www.w3school.com.cn/php/php_ref_array.asp 1.array_change_key_case() 把数组中所有键更改为小写或大写2.array_ch ...

  2. php常用函数(持续中)

    字符串 折分字符串:split和explode 函数原型:array split (string $pattern, string $string [, int $limit])           ...

  3. Linux-wget

    Linux系统中的wget是一个下载文件的工具,它用在命令行下.对于Linux用户是必不可少的工具,我们经常要下载一些软件或从远程服务器恢复备份到本地服务器.wget支持HTTP,HTTPS和FTP协 ...

  4. 浅析Java.lang.Runtime类

    一.概述      Runtime类封装了运行时的环境.每个 Java 应用程序都有一个 Runtime 类实例,使应用程序能够与其运行的环境相连接.      一般不能实例化一个Runtime对象, ...

  5. Mysql索引的类型和优缺点

    索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针.注:[1]索引不是万能的!索引可以加快数据检索操作,但会使数据修改操作变慢.每修改数据 ...

  6. android 时间 格式

    http://blog.csdn.net/yudajun/article/details/7939552

  7. 【转】Tomcat版本是32位、64位问题

    转载地址:http://www.cnblogs.com/greensleeves/p/3168541.html 最近遇到一个Tomcat windows安装版本是32位还是64位问题.由于一系列原因, ...

  8. centos7 shell脚本实现随机数

    questions: 1.随机数如何获得 2.如何确定随机值的大小是我们所需要的 answers: 1.目前可以通过获取系统时间的毫秒数来得到,毕竟毫秒数还是变化比较快的 可以看到这个速度还是变化很快 ...

  9. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

  10. table表格在设置文字垂直居中后,在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行

    table设置了垂直居中后在表格显示相同排列的数据(比如:testtesttesttsttesttesstestse很多的test)时此表格不能换行, 此时会导致table会把页面撑的很宽,导致表格后 ...