This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

func and func()

Hi All,

let a function prototype is :

bit func();

Now if it is used as follows (inadvertently) then what would it do ?? Why not the complier throws an error ??

if (func) {
...
...
}
else {
...
...
}

-Rocknmoon()

Parents
  • "if (func)"

    Funnily enough, I made that very same mistake only the other day!

    As Mark says, the expression 'func' has the value of the address of func; the if simply tests if the value is zero or not - almost undoubtedly it won't be, so it will always equate to "true"

    "The compiler could warn..."

    As I have noted several timed before, "small" cross-compilers like C51 are generally weaker in their diagnostic messages than their "big" native cousins like MSVC, Borland, etc
    Therefore it is often worthwhile running your code through a "big" compiler for the benefit of the more extensive diagnostics.
    Or use lint

Reply
  • "if (func)"

    Funnily enough, I made that very same mistake only the other day!

    As Mark says, the expression 'func' has the value of the address of func; the if simply tests if the value is zero or not - almost undoubtedly it won't be, so it will always equate to "true"

    "The compiler could warn..."

    As I have noted several timed before, "small" cross-compilers like C51 are generally weaker in their diagnostic messages than their "big" native cousins like MSVC, Borland, etc
    Therefore it is often worthwhile running your code through a "big" compiler for the benefit of the more extensive diagnostics.
    Or use lint

Children
No data