-
-
Notifications
You must be signed in to change notification settings - Fork 273
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
.H file extension being counted as C Header file Instead of C++ Header file. #574
Comments
Yeah.... so the problem is the sharing of the extension. Most languages identified have a unique extension. Where this is not the case scc will look at the first 10,000 bytes checking for keywords which would indicate which language it is. Now in this situation I don't know if its possible to do this because my understanding is that they will look almost the same between C and C++ (correct me if I am wrong here please). Its possible I could add in logic that checks if files around it are C++ and changes the header type based on that... although thats not going to be an easy tweak. Another option is the proposed addition of dotfile support where you can add remaps such as .h to always be cpp headers or vice versa by adding in the Ill have more of think on this though. |
I'm not sure if this could be easily achieved, but one way to do this is to assume a header file(.h or .H) is C++ code if and when it contains one or more class definition.
Just in case you need help understanding it, the #ifndef and #define preprocessor keywords allows the compiler to declare the class definition only one time, so this way other classes can include this same class header file without compiler issues, otherwise you'd get same class definition errors everywhere the header file is included. In this case, #ifndef is considered a C Preprocessor and along with the Class keyword this would make it an hybrid C/C++ Code. Maybe just looking for the keyword 'class' should suffice in classifying it as C++, No idea how feasible this would be. |
Describe the bug
.H filename extensions aren't counted as C++ Header files, 'scc' instead counts it as a C Header file.
At least on GCC Manual (Man Pages), C++ can have .H and .HPP as header filename extension along with these other following file extensions: .hh, .H, .hp, .hxx, .hpp, .HPP, .h++, .tcc
On a further note, the inner contents of the .H header files I have are just class definitions with '#define' preprocessor directive surrounding them.
To Reproduce
To reproduce this issue, have C++ source and header files with .CPP and .H extensions respectively and type:
scc ./source/*
Expected behavior
Scc should count .H and other C++ header filename extension as C++ Header File in the result screen instead of saying it's a C Header file.
I've not checked yet, but it's very likely that this issue is also plaguing other filename extensions for C/C++.
Desktop:
The text was updated successfully, but these errors were encountered: