Skip to content

Conversation

@felixonmars
Copy link
Contributor

@felixonmars felixonmars commented Oct 29, 2020

nullptr becomes a keyword since C++11. Let's use NULL instead.

g++ -g --ansi -W -Wall -Wno-unused-parameter -Wno-unused-function -Wno-unneeded-internal-declaration -c Test.C
Test.C:50:21: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++11-compat]
   50 |   Exp *parse_tree = nullptr;
      |                     ^~~~~~~
Test.C: In function ‘int main(int, char**)’:
Test.C:50:21: error: ‘nullptr’ was not declared in this scope
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-unneeded-internal-declaration’ may have been intended to silence earlier diagnostics
make: *** [Makefile:48: Test.o] Error 1

@andreasabel
Copy link
Member

Thanks for reporting this bug.
This use of nullptr was introduced in recent commit ecccc61 in PR #288.
Funnily, my C++ compiler does not complain here, must be Apple's fault.

$ g++ --version
Apple clang version 11.0.0 (clang-1100.0.33.17)

This is why I didn't notice this problem.

I wonder whether the better solution isn't to simply use NULL instead of nullptr and stay compatible with C++98. Note that just a few lines above the problematic *parse_tree = nullptr there is the statement char *filename = NULL. Thus, it is more consistent to continue to use NULL.

@andreasabel andreasabel added bug C++ test Concerning the generated test program labels Oct 29, 2020
@andreasabel andreasabel added this to the 2.9 milestone Oct 29, 2020
`nullptr` becomes a keyword since C++11. Let's use `NULL` instead.

```
g++ -g --ansi -W -Wall -Wno-unused-parameter -Wno-unused-function -Wno-unneeded-internal-declaration -c Test.C
Test.C:50:21: warning: identifier ‘nullptr’ is a keyword in C++11 [-Wc++11-compat]
   50 |   Exp *parse_tree = nullptr;
      |                     ^~~~~~~
Test.C: In function ‘int main(int, char**)’:
Test.C:50:21: error: ‘nullptr’ was not declared in this scope
At global scope:
cc1plus: note: unrecognized command-line option ‘-Wno-unneeded-internal-declaration’ may have been intended to silence earlier diagnostics
make: *** [Makefile:48: Test.o] Error 1
```
@felixonmars
Copy link
Contributor Author

Updated.

FTR, I am using the GNU toolchain:

$ g++ --version
g++ (GCC) 10.2.0

@andreasabel
Copy link
Member

Thanks for the update! I also installed the GNU compiler now and confirmed the problem and the fix.

Thanks for your contribution. I fixed two more regressions of #288 along the way, see 3b751a6 .

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug C++ test Concerning the generated test program

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants