Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is it standard for #if to assume undefined symbolic constants as 0?

In this c program

#include<stdio.h>
int main()
{

        #if UnDefinedSymbolicConstant==0
                printf("UnDefinedSymbolicConstant is equal to 0\n ");
        #else
                printf("UnDefinedSymbolicConstant is not equal to 0\n");

        #endif
        return 0;
}

UnDefinedSymbolicConstant has not been #define anywhere, still it is being assumed as 0 and gives the output on gcc-4.3.4 as:

UnDefinedSymbolicConstant is equal to 0

so, Is this the standard behaviour or it works like this only in gcc?

like image 221
Eight Avatar asked Jul 04 '12 13:07

Eight


People also ask

What is standard for example?

The definition of a standard is something established as a rule, example or basis of comparison. An example of standard is a guideline governing what students must learn in the 7th grade. An example of standard is a piece of music that continues to be played throughout the years.

What is a standard in it?

An IT Standard is a rule, principal, technique, process or template that is designed to provide consistency to the planning, development, operation and governance of information technology services. If you enjoyed this page, please consider bookmarking Simplicable. Cite »

What is an IT industry standard?

Definition. A set of criteria within an industry relating to the standard functioning and carrying out of operations in their respective fields of production. In other words, it is the generally accepted requirements followed by the members of an industry.

What is the use of standard?

Standards contain technical specifications or other precise criteria designed to be used consistently as a rule, guideline, or definition. They help to make life simpler and increase the reliability and the effectiveness of many of the goods and services we use.


1 Answers

Yes, this is specified by the standard in 6.10.1:

After all replacements due to macro expansion and the defined unary operator have been performed, all remaining identifiers (including those lexically identical to keywords) are replaced with the pp-number 0

like image 105
R.. GitHub STOP HELPING ICE Avatar answered Oct 03 '22 21:10

R.. GitHub STOP HELPING ICE