I'm making an adventure game IDE that will output a directory containing a platform-independent C/C++ source code file and all the necessary graphics files and other resources. Instead of taking up all that storage on both the hard disk and in RAM while the project is being developed, I designed the engine to be VERY modular and I'm able to store all the necessary project data in a very compact struct. When the user wants to save their project but not "compile" it into the ready-to-compile source code and graphics form, I was going to use binary I/O to write the struct to the file. When loading a project, all I would have to do would be to read in the struct. The problem is, I want this program to have as few OS limitations as possible, and while I will have to make several different versions of the IDE for all OSs, it would be nice if the project files could be saved on one system and then reopened on another, but in a book I was reading it said that binary file i/o tended to cause problems on cross-platform programs. Would this single-struct file format cause any problems? Would it be best just to write individual variables in ASCII format?