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

Posterino 3.3.7 - Create posters, collag...
Posterino offers enhanced customization and flexibility including a variety of new, stylish templates featuring grids of identical or odd-sized image boxes. You can customize the size and shape of... Read more
Airmail 3.2.8 - Powerful, minimal email...
Airmail is an mail client with fast performance and intuitive interaction. Support for iCloud, MS Exchange, Gmail, Google Apps, IMAP, POP3, Yahoo!, AOL, Outlook.com, Live.com. Airmail was designed... Read more
WhatRoute 2.0.21 - Geographically trace...
WhatRoute is designed to find the names of all the routers an IP packet passes through on its way from your Mac to a destination host. It also measures the round-trip time from your Mac to the router... Read more
Airmail 3.2.8 - Powerful, minimal email...
Airmail is an mail client with fast performance and intuitive interaction. Support for iCloud, MS Exchange, Gmail, Google Apps, IMAP, POP3, Yahoo!, AOL, Outlook.com, Live.com. Airmail was designed... Read more
WhatRoute 2.0.21 - Geographically trace...
WhatRoute is designed to find the names of all the routers an IP packet passes through on its way from your Mac to a destination host. It also measures the round-trip time from your Mac to the router... Read more
iFFmpeg 6.3.5 - Convert multimedia files...
iFFmpeg is a comprehensive media tool to convert movie, audio and media files between formats. The FFmpeg command line instructions can be very hard to master/understand, so iFFmpeg does all the hard... Read more
Opera 45.0.2552.812 - High-performance W...
Opera is a fast and secure browser trusted by millions of users. With the intuitive interface, Speed Dial and visual bookmarks for organizing favorite sites, news feature with fresh, relevant content... Read more
Microsoft Office 2016 15.34 - Popular pr...
Microsoft Office 2016 - Unmistakably Office, designed for Mac. The new versions of Word, Excel, PowerPoint, Outlook and OneNote provide the best of both worlds for Mac users - the familiar Office... Read more
Skype 7.53.0.580 - Voice-over-internet p...
Skype allows you to talk to friends, family and co-workers across the Internet without the inconvenience of long distance telephone charges. Using peer-to-peer data transmission technology, Skype... Read more
Firefox 53.0.3 - Fast, safe Web browser.
Firefox offers a fast, safe Web browsing experience. Browse quickly, securely, and effortlessly. With its industry-leading features, Firefox is the choice of Web development professionals and casual... Read more

Latest Forum Discussions

See All

Honor 8 Pro, a great choice for gamers
Honor is making strides to bring its brand to the forefront of mobile gaming with its latest phone, the Honor 8 Pro. The Pro sets itself apart from its predecessor, the Honor 8, with a host of premium updates that boost the device’s graphical and... | Read more »
The 4 best outdoor adventure apps
Now that we're well into the pleasant, warmer months, it's time to start making the most of the great outdoors. Spring and summer are ideal times for a bit of trekking or exploration. You don't have to go it alone, though. There are plenty of... | Read more »
Things 3 (Productivity)
Things 3 3.0.1 Device: iOS iPhone Category: Productivity Price: $7.99, Version: 3.0.1 (iTunes) Description: Meet the all-new Things! A complete rethinking of the original, award-winning task manager – with a perfect balance between... | Read more »
Oddball mash-up Arkanoid vs Space Invade...
In a move no one was really expecting, Square Enix has put forth an Arkanoid/Space Invaders mash-up aptly titled Arkanoid vs Space Invaders. The game launched today on both iOS and Android and the reviews are actually quite good. [Read more] | Read more »
Arkanoid vs Space Invaders (Games)
Arkanoid vs Space Invaders 1.0 Device: iOS Universal Category: Games Price: $3.99, Version: 1.0 (iTunes) Description: LAUNCH SALE: GET THE GAME AT 20% OFF! Two of the most iconic classic games ever made meet in Arkanoid vs Space... | Read more »
The best new games we played this week
Things got off to a bit of a slow start this week, but as we steadily creep towards Friday a bunch of great games have started cropping up. If you're looking for a quality new release to play this weekend, we've got you covered. Here's a handy... | Read more »
No Stick Shooter (Games)
No Stick Shooter 1.0 Device: iOS Universal Category: Games Price: $1.99, Version: 1.0 (iTunes) Description: Happy Robot presents a fresh take on the classic retro-arcade shooters we all know and love. Featuring 30 levels of non-stop... | Read more »
Chroma Squad (Games)
Chroma Squad 1.0.85 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0.85 (iTunes) Description: | Read more »
Old Man's Journey (Games)
Old Man's Journey 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: A heartfelt game about life, loss and hope. Old Man’s Journey is a soul-searching puzzle adventure game about life’s... | Read more »
Beholder (Games)
Beholder 1.0 Device: iOS Universal Category: Games Price: $4.99, Version: 1.0 (iTunes) Description: Welcome to a grim dystopian future. "Beholder is stressful on a moral level, but as a game, it’s simple and entertaining" - Game... | Read more »

Price Scanner via MacPrices.net

13-inch 2.0GHz Space Gray MacBook Pro on sale...
Amazon has the 13″ 2.0GHz Space Gray non-Touch Bar MacBook Pro (MLL42LL/A) on sale for $1299.99 including free shipping. Their price is $200 off MSRP, and it’s currently the lowest price available... Read more
Roundup of 15-inch MacBook Pro sale prices, m...
B&H Photo has the new 2016 15″ Apple Touch Bar MacBook Pros in stock today and on sale for up to $200 off MSRP. Shipping is free, and B&H charges NY & NJ sales tax only: - 15″ 2.7GHz... Read more
15-inch 2.2GHz Retina MacBook Pro on sale for...
B&H Photo has the 2015 15″ 2.2GHz Retina MacBook Pro (MJLQ2LL/A) on sale for $1849 including free shipping plus NY & NJ sales tax only. Their price is $150 off MSRP. Read more
21-inch iMacs on sale for $100 off MSRP, save...
B&H Photo has 21″ iMacs on sale for $100 off MSRP, each including free shipping plus NY & NJ sales tax only: - 21″ 3.1GHz iMac 4K: $1399.99 $100 off MSRP - 21″ 2.8GHz iMac: $1199.99 $100 off... Read more
Groupon Survey Finds Families Will Spend One-...
With warmer weather finally arriving in most parts of the country and the school year winding down to a close, Groupon (http://www.groupon.com) asked 1,000 U.S. parents how much time their families... Read more
Panasonic Anounces Toughbook 33 2-in-1 Rugged...
Panasonic has announced the U.S. availability of the Panasonic Toughbook 33, claimed to be the first fully-rugged 2-in-1 detachable laptop that features a 3:2 display. Inspired by the hard-working... Read more
9-inch 32GB iPad Pros available for up to $10...
Amazon resellers are offering new 9″ 32GB iPad Pros for up to $101 off MSRP, starting at $498, including free shipping. Colors may be Space Gray, Silver, Gold, or Rose Gold, depending on the reseller... Read more
Back in stock: Apple refurbished Mac minis st...
Apple has Certified Refurbished Mac minis available starting at $419. Apple’s one-year warranty is included with each mini, and shipping is free: - 1.4GHz Mac mini: $419 $80 off MSRP - 2.6GHz Mac... Read more
Back in stock: Apple refurbished 13-inch Reti...
Apple has Certified Refurbished 2015 13″ Retina MacBook Pros available for up to $360 off original MSRP, starting at $1099. An Apple one-year warranty is included with each model, and shipping is... Read more
12-inch 1.1GHz Retina MacBooks on sale for $1...
Adorama has 12″ 1.1GHz Retina MacBooks on sale for $100 off MSRP. Shipping is free, and Adorama charges NY & NJ sales tax only: - 12″ 1.1GHz Gray MacBook: $1199 $100 off MSRP - 12″ 1.1GHz Silver... Read more

Jobs Board

*Apple* Mobile Master - Best Buy (United Sta...
**508102BR** **Job Title:** Apple Mobile Master **Location Number:** 000511-Athens-Store **Job Description:** **What does a Best Buy Apple Mobile Master do?** At Read more
*Apple* Media Products - Commerce Engineerin...
Apple Media Products - Commerce Engineering Manager Job Number: 57037480 Santa Clara Valley, California, United States Posted: Apr. 18, 2017 Weekly Hours: 40.00 Job Read more
Geek Squad *Apple* Master Consultation Agen...
**500444BR** **Job Title:** Geek Squad Apple Master Consultation Agent **Location Number:** 000103-City Of Industry-Store **Job Description:** **What does a Geek Read more
Security Engineer, *Apple* Retail - Apple I...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more Read more
Data Engineer - *Apple* Media Products - Ap...
Changing the world is all in a day's work at Apple . If you love innovation, here's your chance to make a career of it. You'll work hard. But the job comes with more Read more
All contents are Copyright 1984-2011 by Xplain Corporation. All rights reserved. Theme designed by Icreon.