#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. [Android] 修改ImageView的图片颜色

    有两种方法: 方法1: ImageView imageView = (ImageView) findViewById(R.id.arrow_image); Drawable tipsArrow = i ...

  2. (一)sql入门 导读

    从转行做软件始,就开始接触sql,但还是不怎么深入,回忆3月份找工作的时候,左关联都没有写出来,真是丢脸,以此博客做个认真的开始. 以后的日子,遇到了圆柱体的空心物体,我就应该联想到一样东西,那就是数 ...

  3. Win 播放器

    先上图 主要包含的功能有: 打开播放文件, 暂停, 恢复, 停止, 设置声音大小, 设置进度, 获取当前播放进度, 时间进度 提供的源码, 主要采用DSPACK234这个控件 为提高解码的成功率最好先 ...

  4. 6.Git内容修改之后的查看和提交

    我们已经成功地添加并提交了一个readme.txt文件,现在,是时候继续工作了,于是,我们继续修改readme.txt文件,改成如下内容: Git is a distributed version c ...

  5. MQ通道配置

    转自:http://www.cnblogs.com/me115/p/3471788.html MQ通道配置 通道是用来连接两个队列管理器的: 在单个队列管理器内读写消息不需要建立通道:但在一个队列管理 ...

  6. Windows Azure Virtual Machine 之用程序控制Azure VM

    我们在很多时候可能会需要用程序来控制VM的创建,删除工作. 而在这些工作之中,用程序创建一个VM将会是一个非常复杂的过程,因为他涉及到很多步骤. 具体步骤如下 1 创建一个Hosted cloud s ...

  7. 程序员面试大揭秘——应聘微软、亚马逊、谷歌、苹果等IT公司你都要做什么准备?

    对于多数求职者而言,面试好似一个迷局.你去了,见了几个面试官,答了一堆问题,然后,或两手空空离开,或幸运地拿到录用通知. 你有没有想过: 面试结果是怎么得出的? 面试官会不会互相交流? 公司最看重哪些 ...

  8. 了解FreeRTOS源文件目录结构

    参考文献: Understanding the FreeRTOS directory structure. 从官网下载下来的FreeRTOS源文件包,对于每一个已经移植完成的处理器,都有一个与之对应的 ...

  9. EditText光标位置

    1.xml中设置 gravity="top"  加入edittext框的高度不止一行时,该属性可是光标定位在第一行,不设置的话光标是默认在框的中间 2.etEdit.setSele ...

  10. angular.extend()和 angular.copy()的区别

    1.angular.copy angular.copy(source, [destination]);  // source: copy的对象. 可以使任意类型, 包括null和undefined. ...