Sponsored Content
Top Forums Programming Help on digestion of C header files for a short program. Post 302837419 by Don Cragun on Thursday 25th of July 2013 05:37:33 PM
Old 07-25-2013
Quote:
Originally Posted by yifangt
I have some unclear catch for the following lines in the "khash.h" file:
Code:
#ifndef __AC_KHASH_H
#define __AC_KHASH_H
#define AC_VERSION_KHASH_H "0.2.6"

I understand #ifndef and #ifdef to avoid redundant inclusion of the headers/definition etc, but not sure the rules to name the content (here the __AC_KHASH_H) as I was recommended capitalized file name KHASH_H or __KHASH_H in general because the file is "khash.h". The author used __AC_KHASH_H. It seems to me anything is fine once it is unique. Did I miss anything? My unclear parts are:
1) What are the rules to name the content of #ifndefine, if any, in general for software developer?
2) Here AC_VERSION_KHASH_H "0.2.6" seems does not impact the program but for version record of the code, is this correct?
Thank you!
The name #defined doesn't matter much as long as every header that you will be using together uses a different name. A simple convention like __HeaderName (with _ replacing . in the header's name [sometimes after converting the header's name to uppercase]) is a common convention using namespace that is reserved by the C and POSIX standards for system implementor's use (not application writer's use). If you are writing application code (not part of the system an implementation delivers to customers), you need to choose a naming convention outside of this namespace that is coordinated with code from any other third party vendors whose code may be used with your code. (And if you're writing code you expect other's to use with their own code, you need to document the convention you use so they can avoid naming conflicts when they use your code.) You won't be adhering to the standards, but if you look at your system's headers you can probably easily figure out the conventions used by your OS vendor and use a similar, but slightly different, convention that will be unilkely to conflict with future vendor updates.

The standards reserve namespaces for the standards and namespaces for system implementers; everything else is available to application writers. People who write 3rd party software and end users are both considered "application writers" by the standards. So if you are in that category, you are stuck with finding a naming convention that doesn't trample on the namespace reserved for standards and system implementors (or your code might start behaving in strange ways when the next update to the system software is installed) and is "unique" compared to the namespaces used by other 3rd party code writers and end users.

Talk to the experts at your employer for the language you're using and follow their coding conventions. (Most medium and large sized companies will have these conventions on-line and give new hire programmers a pointer to them as part of their first day on the job "Here's How We Do Things at XYZ Corp." training.)

I will disagree slightly with Corona688 on the version information. If something isn't working for you with code you get from a 3rd party, they may ask for that version number so that can figure out which version of their product you're using. If you expect to ever make changes to headers that you write that will affect programmers using your code, including version information in your headers may save you or your successors many headaches later. Smilie
This User Gave Thanks to Don Cragun For This Post:
 

10 More Discussions You Might Find Interesting

1. Programming

C language Header files

Hi people I'm trying to do a school project and I've a situation wich is bothering me, imagine We've a program and that programs devided in multiple files "dotC1.c" and "dotC2.c" (for example) and they include our own header "header.h", and if We are using some libraries int both files it would... (2 Replies)
Discussion started by: pharaoh
2 Replies

2. UNIX for Dummies Questions & Answers

Merge Files into Single with Header

Hi All, I am trying to merge all files in a directory that end in *.txt to a single file with the contents one after the other. This I can do using the cat function but how do I put the name of the file as a header for each one in the combined single file and seperate the contents from each... (2 Replies)
Discussion started by: pcg
2 Replies

3. UNIX for Dummies Questions & Answers

Merge all csv files in one folder considering only 1 header row and ignoring header of all others

Friends, I need help with the following in UNIX. Merge all csv files in one folder considering only 1 header row and ignoring header of all other files. FYI - All files are in same format and contains same headers. Thank you (4 Replies)
Discussion started by: Shiny_Roy
4 Replies

4. UNIX for Dummies Questions & Answers

Short Program for Checking Server date

Hi Guys, Good morning! I have a file which looks something like this: Command was launched from partition 0. ------------------------------------------------ Executing command in server server3 Thu Jan 12 11:10:39 EET 2012 ------------------------------------------------... (3 Replies)
Discussion started by: rymnd_12345
3 Replies

5. Shell Programming and Scripting

Short program to select lines from a file based on a second file

Hello, I use UBUNTU 12.04. I want to write a short program using awk to select some lines in a file based on a second file. My first file has this format with about 400,000 lines and 47 fields: SNP1 1 12.1 SNP2 1 13.2 SNP3 1 45.2 SNP4 1 23.4 My second file has this format: SNP2 SNP3... (1 Reply)
Discussion started by: Homa
1 Replies

6. UNIX for Dummies Questions & Answers

Short Mail Program Help

Hi, I have been out of the loop with my UNIX/Linux for several years and have been working mainframe. I was trying to create a short two line program to create a list of email addresses as a variable and then send the list a file. Here is what I did and I thought that is was right, but I am... (3 Replies)
Discussion started by: jbrider
3 Replies

7. UNIX for Dummies Questions & Answers

Kernel Header Files

I'm trying to lookup the definition of the ext4 superblock schedule in the kernel header files, but I can't seem to locate the files. I'm running the most recent Raspian Debian Wheezy OS with kernel version 3.18. Any help is greatly appreciated. Thank you!! (1 Reply)
Discussion started by: ksmarine1980
1 Replies

8. Shell Programming and Scripting

Remove files having 0 byte or only header

Hi Team, I'm looking for a command which removes files having 0 byte of having only header line (1 line). My ETL process generates these files. Few files are not having header, in that case if no data from source, it will be 0 byte and few files are having header, in that case if no data from... (7 Replies)
Discussion started by: ace_friends22
7 Replies

9. Programming

Where to get C header files?

Some of my c code compiles fine but others can't find header files. Colored_Chars.c:4:10: fatal error: graphics.h: No such file or directory Do I need to download them from some where? I found this. Is this what I need to do? Under Using DSL libraries - How do I use graphics.h in... (3 Replies)
Discussion started by: drew77
3 Replies

10. Shell Programming and Scripting

Find header in a text file and prepend it to all lines until another header is found

I've been struggling with this one for quite a while and cannot seem to find a solution for this find/replace scenario. Perhaps I'm getting rusty. I have a file that contains a number of metrics (exactly 3 fields per line) from a few appliances that are collected in parallel. To identify the... (3 Replies)
Discussion started by: verdepollo
3 Replies
All times are GMT -4. The time now is 03:08 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy