לפני שהולכים למתודולוגית פיתוח דעאש, כדאי לבדוק מה אומר תקן
השפה:
1. תו נועל של מחרוזת ב-C אינו NULL אלא "תו אפס" 0\
ואלה דברים שונים.
NULL הוא define תלוי ארכיטקטורה שמשמעותו "מצביע ריק" ואכן יכול להיות משהו שאינו 0 (קראתי שיש ארכיטקטורות שם זו כתובת נמוכה כגון 0x00000020).
 
אבל 0\ תמיד יהיה בעל ערך 0.
 
2. התקן של C אינו מגדיר טיפוס boolean ואינו מגדיר ערך false כערך עצמאי.
(זה נוסף בתקן 99, אבל עדיין תואם אוחרנית בצורה מלאה והשימוש מצריך include, כך שזו לא ממש "תוספת אינטגרלית של טיפוס חדש" כפי שקיים בשפות אחרות דוגמת Java)
 
במקום זה הוא קובע שערך 0 הוא false.
אני מניח שזו החלטה שנובעת מפקודות JMP שזמינות למימוש תנאים (הרי מפתחי C רצו שהיא תהיה כמה שיותר קרובה לברזלים)
 
3. הדבר היחיד שלא הייתי בטוח לגביו אם הוא בתקן או לא, זה האם הקומפיילר חייב לשים תו 0\ בסוף string literal.
 
גיגול מהיר מראה שאכן חובה:
http://en.cppreference.com/w/cpp/language/string_literal
ואני יודע שקומפיילרים גדולים כגון gcc ו-vc עושים זאת.