www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - File Ex from std_stdio won't compile

reply "Paul" <phshaffer gmail.com> writes:
I copied the code below from this site under the std.stdio 
library reference section and tried to compile it.  I downloaded 
D2/Phobos.  Compiler says "fileread.d(4): Error: undefined 
identifier File"

If I add import std.stdio to the beginning it get ; expected, 
function declaration w/o return type, etc.

Assistance is greatly appreciated.

  void main(string args[])
{
     auto f = File("test.txt", "w"); // open for writing
     f.write("Hello");
     if (args.length > 1)
     {
         auto g = f; // now g and f write to the same file
                     // internal reference count is 2
         g.write(", ", args[1]);
         // g exits scope, reference count decreases to 1
     }
     f.writeln("!");
     // f exits scope, reference count falls to zero,
     // underlying FILE* is closed.
}
Apr 18 2012
parent reply simendsjo <simendsjo gmail.com> writes:
On Wed, 18 Apr 2012 14:09:20 +0200, Paul <phshaffer gmail.com> wrote:

 I copied the code below from this site under the std.stdio library  
 reference section and tried to compile it.  I downloaded D2/Phobos.   
 Compiler says "fileread.d(4): Error: undefined identifier File"

 If I add import std.stdio to the beginning it get ; expected, function  
 declaration w/o return type, etc.

 Assistance is greatly appreciated.

   void main(string args[])
 {
      auto f = File("test.txt", "w"); // open for writing
      f.write("Hello");
      if (args.length > 1)
      {
          auto g = f; // now g and f write to the same file
                      // internal reference count is 2
          g.write(", ", args[1]);
          // g exits scope, reference count decreases to 1
      }
      f.writeln("!");
      // f exits scope, reference count falls to zero,
      // underlying FILE* is closed.
 }
As you note, File is a part of stdio. I think you might have forgotten to terminate the import statement with a semicolon. The following should work: import std.stdio; void main() { auto f = File("test.txt", "w"); f.write("Hello"); }
Apr 18 2012
parent "Paul" <phshaffer gmail.com> writes:
On Wednesday, 18 April 2012 at 12:42:26 UTC, simendsjo wrote:
 On Wed, 18 Apr 2012 14:09:20 +0200, Paul <phshaffer gmail.com> 
 wrote:

 I copied the code below from this site under the std.stdio 
 library reference section and tried to compile it.  I 
 downloaded D2/Phobos.  Compiler says "fileread.d(4): Error: 
 undefined identifier File"

 If I add import std.stdio to the beginning it get ; expected, 
 function declaration w/o return type, etc.

 Assistance is greatly appreciated.

  void main(string args[])
 {
     auto f = File("test.txt", "w"); // open for writing
     f.write("Hello");
     if (args.length > 1)
     {
         auto g = f; // now g and f write to the same file
                     // internal reference count is 2
         g.write(", ", args[1]);
         // g exits scope, reference count decreases to 1
     }
     f.writeln("!");
     // f exits scope, reference count falls to zero,
     // underlying FILE* is closed.
 }
As you note, File is a part of stdio. I think you might have forgotten to terminate the import statement with a semicolon. The following should work: import std.stdio; void main() { auto f = File("test.txt", "w"); f.write("Hello"); }
Arrgh. I was so close. Thank you.
Apr 18 2012