【问题标题】:C compilation errors on using stdprn使用 stdprn 的 C 编译错误
【发布时间】:2012-08-16 15:47:56
【问题描述】:

我的操作系统是:Windows 8

IDE:VS 2012

这是我的 C 程序。 (来自书)

/* print_it.c—This program prints a listing with line numbers! */
#include <stdlib.h>
#include <stdio.h>

void do_heading(char *filename);

int line = 0, page = 0;

int main( int argv, char *argc[] )
{
  char buffer[256];
  FILE *fp;

  if( argv < 2 ) 
  {
    fprintf(stderr, "\nProper Usage is: " );
    fprintf(stderr, "\n\nprint_it filename.ext\n" );
    return(1);
  }

  if (( fp = fopen( argc[1], "r" )) == NULL )
  {
    fprintf( stderr, "Error opening file, %s!", argc[1]);
    return(1);
  }

  page = 0;
  line = 1;
  do_heading( argc[1]);

  while( fgets( buffer, 256, fp ) != NULL )
  {
    if( line % 55 == 0 ) 
      do_heading( argc[1] );
    fprintf( stdprn, "%4d:\t%s", line++, buffer );
  }

  fprintf( stdprn, "\f" );
  fclose(fp);
  return 0;
}

void do_heading( char *filename )
{
  page++;

  if ( page > 1)
    fprintf( stdprn, "\f" );

  fprintf( stdprn, "Page: %d, %s\n\n", page, filename );
}

尝试编译。打开开发者命令提示符,输入

cl print_it.c

得到这个屏幕(一堆错误和警告)

http://content.screencast.com/users/TT13/folders/Jing/media/ff48bfe2-7e83-4d93-b1c5-db7ab7e553b8/2012-08-21_1458.png

我错过了什么?

【问题讨论】:

  • 那本书有多久了?我还没有看到stdprn 用于...年龄!
  • -1 用于发布屏幕截图的文本。
  • 另外,你用的是什么引号? 似乎是某种特殊的 UNICODE 字符,而不是标准的 ASCII " 引号。即使 VC++2012 接受它们,也不要打赌其他编译器会。
  • 第三点,如果你使用的是 VS2012,为什么要从命令行编译而不是从 IDE 内部编译?
  • @KerrekSB 哪个文本?你在说什么?

标签: c windows compilation windows-8 visual-studio-2012


【解决方案1】:

stdprn 不是标准 C 的一部分。stdprn 是 DOS 编译器提供的流。应该避免。

您可以尝试关闭 ANSI 兼容性以使stdprn 工作。 (Reference)

【讨论】:

  • 使用 /Ze 选项,如 here 所述。
  • @DarkXphenomenon /Ze 选项已弃用。禁用 /Za 选项。
  • 那么如何通过跨平台支持重新制作程序以完成相同的工作?你能帮忙吗?
  • @epic_syntax 从可移植性的角度来看,这是不可能的。但是,您可以打印到stdout,然后重定向到打印机设备,或者通过管道将输出发送到将输入发送到打印机的命令。这可移植到所有平台,Windows Unix/Linux。
【解决方案2】:

您可以输入“stdout”而不是“stdprn”

【讨论】:

  • 感谢您的反馈。抱歉,如果这被错误地标记了。评论已被删除,解决方案已被投票。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-12-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多