zoukankan      html  css  js  c++  java
  • getc与fgetc

    ISO C99
    The getc function is equivalent to fgetc, except that if it is implemented as a macro, it
    may evaluate stream more than once
    , so the argument should never be an expression
    with side effects
    .

    FreeBSD
    The getc
    () function acts essentially identically to fgetc(), but is a macro that expands in-line.

    HP-UX
    fgetc Same as getc    but  is  a function rather than a macro
    .    is slower than
                  but it takes less space per invocation and its name  can
                  be passed as an argument to a function
    .

    所以fgetc是一个函数
    getc是一个宏
    一般来说宏产生较大的代码,但是避免了函数调用的堆栈操作,所以速度会比较快。
    但是也有例外的情况:
    1. 很多RISC处理器(如SUN SPARC)使用寄存器窗口重叠技术,
    (http://server.chinabyte.com/404/157904_1.shtml),
    在寄存器充足的情况下,根本不需要堆栈操作,fgetc函数比getc宏更快
    2. 在多线程的情况下,为了线程同步,getc和fgetc可能是相同的。

  • 相关阅读:
    开发报表的先进工具
    强大的报表前端展现功能
    管理驾驶舱监控大屏展现
    换乘算法【转】
    提交中文数据乱码问题总结
    重定向
    容易遗漏的
    jsp基础语法【转】
    说说Java NIO【转】
    Java读取大文件的操作【转】
  • 原文地址:https://www.cnblogs.com/kathmi/p/1429591.html
Copyright © 2011-2022 走看看