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.

 

Community Search:
MacTech Search:

Software Updates via MacUpdate

Latest Forum Discussions

See All

Go from lowly lizard to wicked Wyvern in...
Do you like questing, and do you like dragons? If not then boy is this not the announcement for you, as Loongcheer Game has unveiled Quest Dragon: Idle Mobile Game. Yes, it is amazing Square Enix hasn’t sued them for copyright infringement, but... | Read more »
Aether Gazer unveils Chapter 16 of its m...
After a bit of maintenance, Aether Gazer has released Chapter 16 of its main storyline, titled Night Parade of the Beasts. This big update brings a new character, a special outfit, some special limited-time events, and, of course, an engaging... | Read more »
Challenge those pesky wyverns to a dance...
After recently having you do battle against your foes by wildly flailing Hello Kitty and friends at them, GungHo Online has whipped out another surprising collaboration for Puzzle & Dragons. It is now time to beat your opponents by cha-cha... | Read more »
Pack a magnifying glass and practice you...
Somehow it has already been a year since Torchlight: Infinite launched, and XD Games is celebrating by blending in what sounds like a truly fantastic new update. Fans of Cthulhu rejoice, as Whispering Mist brings some horror elements, and tests... | Read more »
Summon your guild and prepare for war in...
Netmarble is making some pretty big moves with their latest update for Seven Knights Idle Adventure, with a bunch of interesting additions. Two new heroes enter the battle, there are events and bosses abound, and perhaps most interesting, a huge... | Read more »
Make the passage of time your plaything...
While some of us are still waiting for a chance to get our hands on Ash Prime - yes, don’t remind me I could currently buy him this month I’m barely hanging on - Digital Extremes has announced its next anticipated Prime Form for Warframe. Starting... | Read more »
If you can find it and fit through the d...
The holy trinity of amazing company names have come together, to release their equally amazing and adorable mobile game, Hamster Inn. Published by HyperBeard Games, and co-developed by Mum Not Proud and Little Sasquatch Studios, it's time to... | Read more »
Amikin Survival opens for pre-orders on...
Join me on the wonderful trip down the inspiration rabbit hole; much as Palworld seemingly “borrowed” many aspects from the hit Pokemon franchise, it is time for the heavily armed animal survival to also spawn some illegitimate children as Helio... | Read more »
PUBG Mobile teams up with global phenome...
Since launching in 2019, SpyxFamily has exploded to damn near catastrophic popularity, so it was only a matter of time before a mobile game snapped up a collaboration. Enter PUBG Mobile. Until May 12th, players will be able to collect a host of... | Read more »
Embark into the frozen tundra of certain...
Chucklefish, developers of hit action-adventure sandbox game Starbound and owner of one of the cutest logos in gaming, has released their roguelike deck-builder Wildfrost. Created alongside developers Gaziter and Deadpan Games, Wildfrost will... | Read more »

Price Scanner via MacPrices.net

13-inch M2 MacBook Airs in stock today at App...
Apple has 13″ M2 MacBook Airs available for only $849 today in their Certified Refurbished store. These are the cheapest M2-powered MacBooks for sale at Apple. Apple’s one-year warranty is included,... Read more
New today at Apple: Series 9 Watches availabl...
Apple is now offering Certified Refurbished Apple Watch Series 9 models on their online store for up to $80 off MSRP, starting at $339. Each Watch includes Apple’s standard one-year warranty, a new... Read more
The latest Apple iPhone deals from wireless c...
We’ve updated our iPhone Price Tracker with the latest carrier deals on Apple’s iPhone 15 family of smartphones as well as previous models including the iPhone 14, 13, 12, 11, and SE. Use our price... Read more
Boost Mobile will sell you an iPhone 11 for $...
Boost Mobile, an MVNO using AT&T and T-Mobile’s networks, is offering an iPhone 11 for $149.99 when purchased with their $40 Unlimited service plan (12GB of premium data). No trade-in is required... Read more
Free iPhone 15 plus Unlimited service for $60...
Boost Infinite, part of MVNO Boost Mobile using AT&T and T-Mobile’s networks, is offering a free 128GB iPhone 15 for $60 per month including their Unlimited service plan (30GB of premium data).... Read more
$300 off any new iPhone with service at Red P...
Red Pocket Mobile has new Apple iPhones on sale for $300 off MSRP when you switch and open up a new line of service. Red Pocket Mobile is a nationwide MVNO using all the major wireless carrier... Read more
Clearance 13-inch M1 MacBook Airs available a...
Apple has clearance 13″ M1 MacBook Airs, Certified Refurbished, available for $759 for 8-Core CPU/7-Core GPU/256GB models and $929 for 8-Core CPU/8-Core GPU/512GB models. Apple’s one-year warranty is... Read more
Updated Apple MacBook Price Trackers
Our Apple award-winning MacBook Price Trackers are continually updated with the latest information on prices, bundles, and availability for 16″ and 14″ MacBook Pros along with 13″ and 15″ MacBook... Read more
Every model of Apple’s 13-inch M3 MacBook Air...
Best Buy has Apple 13″ MacBook Airs with M3 CPUs in stock and on sale today for $100 off MSRP. Prices start at $999. Their prices are the lowest currently available for new 13″ M3 MacBook Airs among... Read more
Sunday Sale: Apple iPad Magic Keyboards for 1...
Walmart has Apple Magic Keyboards for 12.9″ iPad Pros, in Black, on sale for $150 off MSRP on their online store. Sale price for online orders only, in-store price may vary. Order online and choose... Read more

Jobs Board

Solutions Engineer - *Apple* - SHI (United...
**Job Summary** An Apple Solution Engineer's primary role is tosupport SHI customers in their efforts to select, deploy, and manage Apple operating systems and Read more
DMR Technician - *Apple* /iOS Systems - Haml...
…relevant point-of-need technology self-help aids are available as appropriate. ** Apple Systems Administration** **:** Develops solutions for supporting, deploying, Read more
Omnichannel Associate - *Apple* Blossom Mal...
Omnichannel Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Operations Associate - *Apple* Blossom Mall...
Operations Associate - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Read more
Cashier - *Apple* Blossom Mall - JCPenney (...
Cashier - Apple Blossom Mall Location:Winchester, VA, United States (https://jobs.jcp.com/jobs/location/191170/winchester-va-united-states) - Apple Blossom Mall Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.