clang-tools 3.8.0

- Main Page
- Namespaces
- Classes
- Files

- Class List
- Class Index
- Class Hierarchy
- Class Members

Public Member Functions | List of all members
clang::tidy::MacroParenthesesCheck Class Reference

Finds macros that can have unexpected behaviour due to missing parentheses. More...

`#include <MacroParenthesesCheck.h>`

Inheritance diagram for clang::tidy::MacroParenthesesCheck:
[legend]
Collaboration diagram for clang::tidy::MacroParenthesesCheck:
[legend]

## Public Member Functions
| MacroParenthesesCheck (StringRef Name, ClangTidyContext *Context)
void | registerPPCallbacks (CompilerInstance &Compiler) override
| Override this to register `PPCallbacks` with `Compiler`. More...
Public Member Functions inherited from clang::tidy::ClangTidyCheck
| ClangTidyCheck (StringRef CheckName, ClangTidyContext *Context)
| Initializes the check with `CheckName` and `Context`. More...
virtual void | registerMatchers (ast_matchers::MatchFinder *Finder)
| Override this to register ASTMatchers with `Finder`. More...
virtual void | check (const ast_matchers::MatchFinder::MatchResult &Result)
| `ClangTidyChecks` that register ASTMatchers should do the actual work in here. More...
DiagnosticBuilder | diag (SourceLocation Loc, StringRef Description, DiagnosticIDs::Level Level=DiagnosticIDs::Warning)
| Add a diagnostic with the check's name. More...
virtual void | storeOptions (ClangTidyOptions::OptionMap &Options)
| Should store all options supported by this check with their current values or default values for options that haven't been overridden. More...

## Additional Inherited Members
Protected Member Functions inherited from clang::tidy::ClangTidyCheck
StringRef | getCurrentMainFile () const
| Returns the main file name of the current translation unit. More...
LangOptions | getLangOpts () const
| Returns the language options from the context. More...
Protected Attributes inherited from clang::tidy::ClangTidyCheck
OptionsView | Options

## Detailed Description

Finds macros that can have unexpected behaviour due to missing parentheses.

Macros are expanded by the preprocessor as-is. As a result, there can be unexpected behaviour; operators may be evaluated in unexpected order and unary operators may become binary operators, etc.

When the replacement list has an expression, it is recommended to surround it with parentheses. This ensures that the macro result is evaluated completely before it is used.

It is also recommended to surround macro arguments in the replacement list with parentheses. This ensures that the argument value is calculated properly.

Definition at line 31 of file MacroParenthesesCheck.h.

## Constructor & Destructor Documentation

clang::tidy::MacroParenthesesCheck::MacroParenthesesCheck | ( | StringRef | Name,
|  | ClangTidyContext * | Context
| ) |  |
| inline

Definition at line 33 of file MacroParenthesesCheck.h.

## Member Function Documentation

void clang::tidy::MacroParenthesesCheck::registerPPCallbacks | ( | CompilerInstance & | Compiler | ) |
| override virtual

Override this to register `PPCallbacks` with `Compiler`.

This should be used for clang-tidy checks that analyze preprocessor- dependent properties, e.g. the order of include directives.

Reimplemented from clang::tidy::ClangTidyCheck.

Definition at line 195 of file MacroParenthesesCheck.cpp.

The documentation for this class was generated from the following files:

- MacroParenthesesCheck.h
- MacroParenthesesCheck.cpp