TweetFollow Us on Twitter

Hello World
Volume Number:2
Issue Number:5
Column Tag:The ABC's of C

Starting with Hello World

By Bob Gordon, Apropos Publications, Minneapolis, MN

Welcome to How to C. This series will explore use of the C language on the Macintosh for those who don't know C and may have fairly limited experience programming the Mac. Put another way, if you often have the feeling that you don't know what's going on, this is a place to get your bearings.

You'll find the following items useful to have around if you want to do more than program vicariously:

• Using the Macintosh Toolbox with C by Takatsuka, Huxham, and Burnard (Sybex, 1986). This will serve as our 'text.' It is currently the best available book on C on the Mac. We will generally follow their order of topics.

• The C Programming Language by Kernighan and Ritchie (Prentice-Hall, 1978). If you are going to use C, you need this book. It is an amazingly clear and concise discussion of the language.

• Inside Macintosh. Mainly because the first book does not cover everything.

• A C development system. A number of compilers are available. We'll focus on Consulair's Mac C because the Using the Macintosh Toolbox book uses it, and because it uses MDS. If you're using a different compiler, don't worry. C is one of the more portable languages (between compilers and machines), and I'll try to point out differences when they appear.

I'll also mention other useful sources of which I am aware. If you have any favorite books or articles, send me a note so we can share the information.

Why Use C / Why Not Use C

C was designed to be suitable for systems programming. As such, it is very flexible and allows programmers to do pretty much as they please. C is often characterized as a 'medium level' language. It offers the control mechanisms and data structures of a higher level language but at the same time allows access to the hardware and the ability to handle data in any way that seems suitable at the time. The compilers typically generate fairly fast, compact code.

This flexibility is not without its costs, however. It is very easy to make a real mess of things (and generate incendiary devices on the Macintosh) by not getting the types of parameters correct. And some C notation can be downright cryptic. It is easy to make C code unreadable.

In spite of the problems, I prefer C to Pascal. I could usually do what I wanted with Pascal (depending on the compiler), but I knew I was cheating. And I could never be sure the technique would work the same way with a different compiler.

Problems Using C on the Macintosh

One problem with C vis-à-vis the Macintosh is that much of the C literature and many of the standard library functions assume you are using Unix or a Unix-like operating system. As you may have noticed, the Macintosh does not. This poses an additional set of problems for learning C on the Mac. The compiler makers follow two approaches. Some ignore Unix; others make the Mac look like it's running Unix.

A second problem is that the Macintosh operating system assumes applications will be written in Pascal. This presents problems in at least two areas: strings and parameter passing.

A C string is an array of bytes with a terminating zero (a byte of all zero bits, a binary zero, the null character, represented in C by \0). A Pascal string, as far as the Macintosh is concerned, is an array of bytes consisting of a leading byte containing the number of bytes in the string followed by the bytes of the string. Obviously sending a C string to a Toolbox function is not going to yield any sort of desired result. The compiler makers have solved this problem in two ways. Some compilers automatically convert the string when its passed; others provide a C function to do the conversion that you call before calling the Toolbox function (and another function to reconvert the string). Check your compiler's documentation to see what it does.

The parameter passing problem involves a number of issues: where parameters are passed (stack or registers), the order in which they are passed, and how complex data types are passed. Most of the time you need not to be concerned with this at all; your compiler will do the necessary translations. In some cases (with some compilers) you must be aware of the difference.

Getting Started

The first program we'll do is the first program in Kernighan and Ritchie. This will force us to figure out how to set up our compiler, and use the editor, compiler, and linker. Now, at this point I should simply recount my experiences in getting "hello, world" to appear on my screen. Unhappily, I only recently received the compiler so I haven't done it yet. I also do not have two Macs so excuse me while I figure this out.

This month I've got Mac C™ from Consulair. It comes with three booklets of documentation, a letter from the author Bill Duvall, and some information sheets. One sheet describes the contents of the four disks. They include a public domain ram disk program written in Mac C called RamStart, so the first thing I did was to set up a ram disk.

Using RamStart is a bit exciting. A help button is available, but if you don't click it fast enough, RamStart goes ahead and makes the ram disk. I don't remember exactly how I found that out: it is, of course, in the instructions, but you can't read the instructions unless you click help. Catch 22. Actually, the program is quite easy to use. Simply put what you want in the ram disk in the same folder with RamStart, and it creates the disk with those files in it. With Mac C, you may not have a ram disk larger than 280 K bytes (on a 512 K machine) or the compiler will run out of room.

The Mac C package includes Edit, the four window mouse-driven program editor. Edit allows transferring directly to the compiler so you can invoke the compiler directly from Edit.

hello, world

Using Edit, I typed in the first program most people learning C try, a program to print "hello, world" on the screen.

#include  "stdio.h"

/* traditional first C program */
  printf("hello, world"); 

That's the program. If you have never seen a C program before, there is a lot to examine even in this.

The first line specifies an include file. This is a separate file that you wish to include as part of the compilation. These files typically contain constants, references to external functions, new symbols, and macros, but they can contain any code you wish to include.

Here are some parts of the stdio.h that comes with Mac C:

// stdio.h  

The double slash means comment to the end of the line. This is not standard.

// Copyright 1984 Consulair Corporation.
// All rights reserved

// Aug 30, 1984 2:43 PM: New File
// Standard UNIX IO library defs for MacC

    #define ERROR -1
    #define EOF -1
    #define NULL 0
    #define MAXLINE 255
    #define FILE int

The defines are instructions to the C preprocessor. These supply names to some oft-used values. In a program, you can use the name and the preprocessor will replace it with the value. By the way, standard C practice requires the "#" be in the first column. Mac C allows it anywhere on the line as long at is is preceded only by white space.

// Standard Routines

  extern char putchar();
  extern char fputc();
  extern long putl();
  extern int printf(...);

There are references to external functions. External functions are functions defined in another file. For the compiler to work correctly, it needs to know the type of object returned, if any. Here we see that putchar returns a type char, putl returns a long, and printf returns an int. Most C compilers have a separate include file for each chapter in Inside Macintosh to provide the necessary definitions.

To return to our program, the next line is:

/* traditional first C program */

This is a comment. The "/* */" bracket comments.


Every C program must have one and only one main function. It is where execution starts. Function names always have parentheses after them even if they have no parameters.


The braces define a block of code that is handled as one line for program control purposes. They are similar to Pascal's begin-end.

The only piece of code that does anything here is printf. It is used to write strings on the screen (the standard output device). It is not actually part of the language but is part of the standard library. The semicolon is a line terminator.

A few comments are in order concerning other compilers. Mac C creates a TTY window for the standard C I/O functions. Other compilers may write directly to the desk top or require that you create a window for them. You will have to check the documentation.

Next month we'll look at some more basic C concepts and start dealing with using C in the Macintosh environment.


Community Search:
MacTech Search:

Software Updates via MacUpdate

Suitcase Fusion 6 17.3.0 - Font manageme...
Suitcase Fusion 6 is the creative professional's font manager. Every professional font manager should deliver the basics: spectacular previews, powerful search tools, and efficient font organization... Read more
Nisus Writer Pro 2.1.2 - Multilingual wo...
Nisus Writer Pro is a powerful multilingual word processor, similar to its entry level products, but brings new features such as table of contents, indexing, bookmarks, widow and orphan control,... Read more
calibre 2.40.0 - Complete e-book library...
Calibre is a complete e-book library manager. Organize your collection, convert your books to multiple formats, and sync with all of your devices. Let Calibre be your multi-tasking digital librarian... Read more
Vivaldi - An advanced browser...
Vivaldi is a browser for our friends. In 1994, two programmers started working on a web browser. Our idea was to make a really fast browser, capable of running on limited hardware, keeping in mind... Read more
OmniPlan 3.0 - Robust project management...
With OmniPlan, you can create logical, manageable project plans with Gantt charts, schedules, summaries, milestones, and critical paths. Break down the tasks needed to make your project a success,... Read more
Yummy FTP 1.11 - FTP/SFTP/FTPS client fo...
Yummy FTP is an FTP + SFTP + FTPS file transfer client which focuses on speed, reliability and productivity. Whether you need to transfer a few files or a few thousand, schedule automatic backups, or... Read more
Tweetbot 2.1 - Popular Twitter client. (...
Tweetbot is a full-featured OS X Twitter client with a lot of personality. Whether it's the meticulously-crafted interface, sounds and animation, or features like multiple timelines and column views... Read more
MacPilot 8.0 - Enable over 1,200 hidden...
MacPilot gives you the power of UNIX and the simplicity of Macintosh, which means a phenomenal amount of untapped power in your hands! Use MacPilot to unlock over 1,200 features, and access them all... Read more
Typinator 6.7 - Speedy and reliable text...
Typinator turbo-charges your typing productivity. Type a little. Typinator does the rest. We've all faced projects that require repetitive typing tasks. With Typinator, you can store commonly used... Read more
Adobe Lightroom 6.2 - Import, develop, a...
Adobe Lightroom is available as part of Adobe Creative Cloud for as little as $9.99/month bundled with Photoshop CC as part of the photography package. Lightroom 6 is also available for purchase as a... Read more

Balloony Land offers a fresh twist on th...
Balloony Land by Palringo offers a fresh twist on the match three genre and is out now on iOS and Android. First-off, you'll be popping balloons instead of crushing candy and the balloons will float up and fill the empty spaces instead of dropping... | Read more »
Graphic - vector illustration and design...
Graphic - vector illustration and design 1.0 Device: iOS iPhone Category: Productivity Price: $2.99, Version: 1.0 (iTunes) Description: Autodesk Graphic is a powerful full-featured vector drawing and illustration application right in... | Read more »
Sago Mini Babies (Education)
Sago Mini Babies 1.0 Device: iOS Universal Category: Education Price: $2.99, Version: 1.0 (iTunes) Description: Introducing the Sago Mini babies. Boys and girls love caring for these adorable characters. Feed Robin her favorite mush... | Read more »
PAUSE - Relaxation at your fingertip (H...
PAUSE - Relaxation at your fingertip 1.1 Device: iOS iPhone Category: Healthcare & Fitness Price: $1.99, Version: 1.1 (iTunes) Description: | Read more »
Super Sharp (Games)
Super Sharp 1.1 Device: iOS Universal Category: Games Price: $1.99, Version: 1.1 (iTunes) Description: Your finger has never been so sharp! Cut with skill to complete the 120 ingenious physics levels of Super Sharp and become a cut... | Read more »
Assembly - Graphic design for everyone...
Assembly - Graphic design for everyone 1.0 Device: iOS Universal Category: Photography Price: $2.99, Version: 1.0 (iTunes) Description: Assembly is the easiest most powerful design tool on the App Store. Create anything you can... | Read more »
Dub Dash (Games)
Dub Dash 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: ARE YOU READY FOR THE ULTIMATE CHALLENGE? UNIQUE SYMBIOSIS OF MUSIC AND GRAPHICS | Read more »
Leave Me Alone (Games)
Leave Me Alone 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: 33% off launch sale!!! Somewhere between the 1980s and 1990s there exists a world that never was. A world of skatepunks,... | Read more »
YAMGUN (Games)
YAMGUN 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: The invasion has begun! Protect the walls of the citadel against waves of enemies! But watch out, you will soon run out of ammo...... | Read more »
Chesh (Games)
Chesh 1.0 Device: iOS Universal Category: Games Price: $2.99, Version: 1.0 (iTunes) Description: It’s like chess, only not at all. ***40% off for a limited time to celebrate our launch!*** Chesh is a game of skill, strategy, luck,... | Read more »

Price Scanner via

TP-LINK Next-Gen Routers Support a Large Numb...
TP-LINK, specialists in consumer and business networking products, have announced the availability of Archer C2600, the company’s next-generation router featuring wireless AC, multi-user MIMO, and 4-... Read more
Apple’s Education discount saves up to $300 o...
Purchase a new Mac or iPad using Apple’s Education Store and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free, and... Read more
Save up to $350 with Apple refurbished iMacs
Apple has Certified Refurbished iMacs available for up to $350 off the cost of new models. Apple’s one-year warranty is standard, and shipping is free: - 27″ 3.5GHz 5K iMac – $1949 $350 off MSRP - 27... Read more
Mac Pros on sale for up to $300 off MSRP
B&H Photo has Mac Pros on sale for up to $300 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2818.99, $181 off MSRP - 3.5GHz 6-core Mac Pro: $3699... Read more
5K iMacs on sale for up to $150 off MSRP, fre...
B&H Photo has the 27″ 3.3GHz 5K iMac on sale for $1899.99 including free shipping plus NY tax only. Their price is $100 off MSRP. They have the 27″ 3.5GHz 5K iMac on sale for $2149, $150 off MSRP... Read more
Twelve South Redesigns BookArc For Today’s Sm...
Twelve South has announced a redesigned version of their very first product, BookArc for MacBook. Tailored specifically for the newest generation of MacBooks, BookArc holds the new, smaller Apple... Read more
Phone 6s Tips & Tricks – Tips Book For iP...
Poole, United Kingdom based Tap Guides Ltd. has announced the release and immediate availability of iPhone 6s Tips & Tricks, an in-depth eBook available in the iBookstore that’s priced just $2.99... Read more
Apple refurbished 2014 13-inch Retina MacBook...
Apple has Certified Refurbished 2014 13″ Retina MacBook Pros available for up to $400 off original MSRP, starting at $979. An Apple one-year warranty is included with each model, and shipping is free... Read more
13-inch 2.5GHz MacBook Pro on sale for $994,...
Best Buy has the 13″ 2.5GHz MacBook Pro available for $994.99 on their online store. Choose free shipping or free instant local store pickup (if available). Their price is $105 off MSRP. Price valid... Read more
Is The iPad Pro Really A Serious Laptop Repla...
Probably not, at least for productive professionals and other power users. Steve Jobs declared that we’d entered the “post-PC Era” with the advent of the original iPad in 2010, a phrase we don’t hear... Read more

Jobs Board

*Apple* Desktop Analyst - KDS Staffing (Unit...
…work with some of the brightest engineers. Job Description Title: Apple Desktop AnalystPosition Type: Full-time PermanentLocation: White Plains, NYHot Points:Depth of Read more
*Apple* Retail Online, Customer Experience R...
**Job Summary** Apple Retail's Online Store sells Apple products to customers around the world. In addition to selling Apple products with unique services such Read more
Frameworks Engineer, *Apple* Watch - Apple...
**Job Summary** Join the team that is shaping the future of software development for Apple Watch! As a software engineer on the Apple Watch Frameworks team you will Read more
Senior Manager, Global Direct Marketing *App...
**Job Summary** Apple Retail is looking for an experienced Direct Marketing Leader to join its Marketing team. This position will take a leadership role in creating Read more
*Apple* Online Store Expansion - Apple (Unit...
**Job Summary** The Online Apple Store is seeking a person to lead its expansion into new countries. Based in Cupertino, CA, this person will develop and maintain an Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.