OMNeT++/OMNEST Bug Tracker - OMNeT++ | |||||
View Issue Details | |||||
ID | Project | Category | View Status | Date Submitted | Last Update |
0000832 | OMNeT++ | IDE / C++ development | public | 2015-08-12 19:09 | 2017-02-13 12:30 |
Reporter | woife | ||||
Assigned To | rhornig | ||||
Priority | low | Severity | minor | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Platform | Windows and Linux | OS | OS Version | ||
Product Version | 4.6 | ||||
Target Version | Fixed in Version | 5.1pre3 | |||
Summary | 0000832: Adding -pedantic compiler option triggers warnings in OMNeT++ headers | ||||
Description | I wanted to use the compiler option -pedantic in one of my projects. But compiling the project with this options overflows to console window with lots of warnings generated by some OMNeT++ headers. All of these warnings are of the same type (warning: extra ‘;’) and are triggered by only 2 places in the code: Place 1: nedsupport.h -------------------------- This file contains the definition of the namespace 'NEDSupport', which ends at the end of the file, and is terminated with a semicolon. This semicolon is not necessary, triggers a warning, and can be safely removed. Place 2: onstartup.h -------------------------- This is more difficult. I can describe why the warning triggers, but I don't know how to fix it. Suppose you have a message file name MyMessages.msg with a message type called MyMessage. Compiling this file creates a C++ file called MyMessages_m.cc. This file will contain the lines Register_Class(MyMessage); and Register_ClassDescriptor(MyMessageDescriptor); These macros are defined in 'regmacros.h' and both contain as their last statement the macro EXECUTE_ON_STARTUP which is defined in 'onstartup.h'. The code in EXECUTE_ON_STARTUP defines a namespace which is again followed by a semicolon. Again, this semicolon is not necessary and can be removed. However, this time this is not enough: When the Register_Class macro is expanded, the semicolon after Register_Class in the original C++ File (MyMessage_m.cc) will follow right after the namespace definition, where it triggers the same warning. I don't know how to fix this. As a very dirty workaround, I have added the following statement at the end of EXECUTE_ON_STARTUP: struct MAKE_UNIQUE_WITHIN_FILE(dirty_workaround_for_compiler_warning) This gets rid of the warning, and I can compile my code with -pedantic without a single warning. However, the intention of adding -pedantic is to write clean code, so adding dirty hacks is probably not a good way to shut down a warning :) It hasn't triggered a warning with my code, but the macro EXECUTE_ON_SHUTDOWN has the same structure as EXECUTE_ON_STARTUP, so I guess changes for one should also be applied to the other. | ||||
Steps To Reproduce | |||||
Additional Information | To add the compiler option -pedantic, I added the following text in project settings->OMNeT++->Makemake->Options->Custom->Makefrag: CXXFLAGS += -pedantic | ||||
Tags | No tags attached. | ||||
Relationships | |||||
Attached Files | |||||
Issue History | |||||
Date Modified | Username | Field | Change | ||
2015-08-12 19:09 | woife | New Issue | |||
2015-10-12 09:28 | ammmar1988 | Issue cloned: 0000842 | |||
2017-02-13 12:30 | rhornig | Note Added: 0001316 | |||
2017-02-13 12:30 | rhornig | Status | new => resolved | ||
2017-02-13 12:30 | rhornig | Fixed in Version | => 5.1pre3 | ||
2017-02-13 12:30 | rhornig | Resolution | open => fixed | ||
2017-02-13 12:30 | rhornig | Assigned To | => rhornig |
Notes | |||||
|
|||||
|
|