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 */
main()  
{
  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.

main()

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.

{
  printf("hello,world");
}

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.

 
AAPL
$112.38
Apple Inc.
-0.27
MSFT
$47.75
Microsoft Corpora
+0.23
GOOG
$510.37
Google Inc.
-0.73

MacTech Search:
Community Search:

Software Updates via MacUpdate

calibre 2.13 - Complete e-library manage...
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
Mellel 3.3.7 - Powerful word processor w...
Mellel is the leading word processor for OS X and has been widely considered the industry standard since its inception. Mellel focuses on writers and scholars for technical writing and multilingual... Read more
ScreenFlow 5.0.1 - Create screen recordi...
Save 10% with the exclusive MacUpdate coupon code: AFMacUpdate10 Buy now! ScreenFlow is powerful, easy-to-use screencasting software for the Mac. With ScreenFlow you can record the contents of your... Read more
Simon 4.0 - Monitor changes and crashes...
Simon monitors websites and alerts you of crashes and changes. Select pages to monitor, choose your alert options, and customize your settings. Simon does the rest. Keep a watchful eye on your... Read more
BBEdit 11.0.2 - Powerful text and HTML e...
BBEdit is the leading professional HTML and text editor for the Mac. Specifically crafted in response to the needs of Web authors and software developers, this award-winning product provides a... Read more
ExpanDrive 4.2.1 - Access cloud storage...
ExpanDrive builds cloud storage in every application, acts just like a USB drive plugged into your Mac. With ExpanDrive, you can securely access any remote file server directly from the Finder or... Read more
Adobe After Effects CC 2014 13.2 - Creat...
After Effects CC 2014 is available as part of Adobe Creative Cloud for as little as $19.99/month (or $9.99/month if you're a previous After Effects customer). After Effects CS6 is still available... Read more
Evernote 6.0.5 - Create searchable notes...
Evernote allows you to easily capture information in any environment using whatever device or platform you find most convenient, and makes this information accessible and searchable at anytime, from... Read more
Command-C 1.1.7 - Clipboard sharing tool...
Command-C is a revolutionary app which makes easy to share your clipboard between iOS and OS X using your local WiFi network, even if the app is not currently opened. Copy anything (text, pictures,... Read more
Tidy Up 4.0.2 - Find duplicate files and...
Tidy Up is a complete duplicate finder and disk-tidiness utility. With Tidy Up you can search for duplicate files and packages by the owner application, content, type, creator, extension, time... Read more

Latest Forum Discussions

See All

BulkyPix Celebrates its 6th Anniversary...
BulkyPix Celebrates its 6th Anniversary with a Bunch of Free Games Posted by Jessica Fisher on December 19th, 2014 [ permalink ] BulkyPix has | Read more »
Indulge in Japanese cuisine in Cooking F...
Indulge in Japanese cuisine in Cooking Fever’s new sushi-themed update Posted by Simon Reed on December 19th, 2014 [ permalink ] Lithuanian developer Nordcurrent has yet again updated its restaurant simulat | Read more »
Badland Daydream Level Pack Arrives to C...
Badland Daydream Level Pack Arrives to Celebrate 20 Million Downloads Posted by Ellis Spice on December 19th, 2014 [ permalink ] | Read more »
Far Cry 4, Assassin’s Creed Unity, Desti...
Far Cry 4, Assassin’s Creed Unity, Destiny, and Beyond – AppSpy Takes a Look at AAA Companion Apps Posted by Rob Rich on December 19th, 2014 [ permalink ] These day | Read more »
A Bunch of Halfbrick Games Are Going Fre...
A Bunch of Halfbrick Games Are Going Free for the Holidays Posted by Ellis Spice on December 19th, 2014 [ permalink ] Universal App - Designed for iPhone and iPad | Read more »
Shift - Photo Filters Designed By You (...
Shift - Photo Filters Designed By You 1.0 Device: iOS Universal Category: Photography Price: $.99, Version: 1.0 (iTunes) Description: | Read more »
Elastic Drums (Music)
Elastic Drums 1.0 Device: iOS iPhone Category: Music Price: $3.99, Version: 1.0 (iTunes) Description: *** Introduction price 3,99$ instead of 7,99$ *** Elastic Drums is a music app with 6 channels of synthesized drum sounds, a step... | Read more »
Fireworks Simulator (Games)
Fireworks Simulator 1.0.8 Device: iOS Universal Category: Games Price: $.99, Version: 1.0.8 (iTunes) Description: *** 50% discount – For a short time only *** You can play Fireworks Simulator on these devices: - iPhone 5, 5s, 5c, 6,... | Read more »
Nicky's Gift (Games)
Nicky's Gift 1.0 Device: iOS Universal Category: Games Price: $.99, Version: 1.0 (iTunes) Description: Everybody! Merry Christmas! There's 48 levels in the game. Let's go! Nicky's Gift | Read more »
The Hit List — Simply Powerful Tasks, To...
The Hit List — Simply Powerful Tasks, To-Dos, Projects, & Reminders 2.0 Device: iOS iPhone Category: Productivity Price: $9.99, Version: 2.0 (iTunes) Description: >> LAUNCH SPECIAL: The Hit List 2 for iPhone is ONLY $9.99... | Read more »

Price Scanner via MacPrices.net

It’s 1992 Again At Sony Pictures, Except For...
Techcrunch’s John Biggs interviewed a Sony Pictures Entertainment (SPE) employee, who quite understandably wished to remain anonymous, regarding post-hack conditions in SPE’s L.A office, explaining “... Read more
Holiday sales this weekend: MacBook Pros for...
 B&H Photo has new MacBook Pros on sale for up to $300 off MSRP as part of their Holiday pricing. Shipping is free, and B&H charges NY sales tax only: - 15″ 2.2GHz Retina MacBook Pro: $1699... Read more
Holiday sales this weekend: MacBook Airs for...
B&H Photo has 2014 MacBook Airs on sale for up to $120 off MSRP, for a limited time, for the Thanksgiving/Christmas Holiday shopping season. Shipping is free, and B&H charges NY sales tax... Read more
Holiday sales this weekend: iMacs for up to $...
B&H Photo has 21″ and 27″ iMacs on sale for up to $200 off MSRP including free shipping plus NY sales tax only. B&H will also include a free copy of Parallels Desktop software: - 21″ 1.4GHz... Read more
Holiday sales this weekend: Mac minis availab...
B&H Photo has new 2014 Mac minis on sale for up to $80 off MSRP. Shipping is free, and B&H charges NY sales tax only: - 1.4GHz Mac mini: $459 $40 off MSRP - 2.6GHz Mac mini: $629 $70 off MSRP... Read more
Holiday sales this weekend: Mac Pros for up t...
B&H Photo has Mac Pros on sale for up to $500 off MSRP. Shipping is free, and B&H charges sales tax in NY only: - 3.7GHz 4-core Mac Pro: $2599, $400 off MSRP - 3.5GHz 6-core Mac Pro: $3499, $... Read more
Save up to $400 on MacBooks with Apple Certif...
The Apple Store has Apple Certified Refurbished 2014 MacBook Pros and MacBook Airs available for up to $400 off the cost of new models. An Apple one-year warranty is included with each model, and... Read more
Save up to $300 on Macs, $30 on iPads with Ap...
Purchase a new Mac or iPad at The Apple Store for Education and take up to $300 off MSRP. All teachers, students, and staff of any educational institution qualify for the discount. Shipping is free,... Read more
iOS and Android OS Targeted by Man-in-the-Mid...
Cloud services security provider Akamai Technologies, Inc. has released, through the company’s Prolexic Security Engineering & Research Team (PLXsert), a new cybersecurity threat advisory. The... Read more
KMI MIDI K-Board Great Gift for Amateur &...
The K-Board is a MIDI Nano keyboard for music creation for iPad, Android, And computers; the easiest way to make music with iPads & Android tablets, and Mac, Windows, or Linux computers. Ultra-... Read more

Jobs Board

Project Manager, *Apple* Financial Services...
**Job Summary** Apple Financial Services (AFS) offers consumers, businesses and educational institutions ways to finance Apple purchases. We work with national and Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
*Apple* Retail - Multiple Positions (US) - A...
Job Description: Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, Read more
*Apple* Retail - Multiple Positions (US) - A...
Sales Specialist - Retail Customer Service and Sales Transform Apple Store visitors into loyal Apple customers. When customers enter the store, you're also the Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.