Controlling C Code Style
About This Tutorial
Learning Objectives
This tutorial shows you how to:
- Generate code for - if-elseif-elsedecision logic as- switch-casestatements.
- Generate C code from your MATLAB® code using the MATLAB Coder™ app. 
- Configure code generation configuration parameters in the MATLAB Coder project. 
- Generate a code generation report that you can use to trace between the original MATLAB code and the generated C code. 
Required Products
This tutorial requires the following products:
- MATLAB 
- MATLAB Coder 
- C compiler - MATLAB Coder locates and uses a supported installed compiler. See Supported and Compatible Compilers on the MathWorks® website. - You can use - mex -setupto change the default compiler. See Change Default Compiler.
Required Files
| Type | Name | Description | 
|---|---|---|
| Function code | test_code_style.m | MATLAB example that uses if-elseif-else. | 
Create File in a Local Working Folder
- Create a local working folder, for example, - c:\ecoder\work.
- Create a file - test_code_style.mthat contains this code:- function y = test_code_style(x) %#codegen if (x == 1) y = 1; elseif (x == 2) y = 2; elseif (x == 3) y = 3; else y = 4; end 
Open the MATLAB Coder App
On the MATLAB Toolstrip Apps tab, under Code Generation, click the MATLAB Coder app icon. The app opens the Create MATLAB Coder Project dialog box.
Provide the name of the project file and the folder in which you want to place the file.
      For this example, create a file named code_style.coderprj in your current
      working folder.
Specify Source Files
- Either click the Add Entry Points button in the Inputs section of the MATLAB Coder panel or the Entry Points button in the toolstrip. 
- The Entry Points tab opens. Enter the name of your entry-point function - test_code_style.
- The app runs the Code Generation Readiness Tool on the entry-point function. This tool screens the MATLAB code for features and functions that are not supported for code generation. If the app identifies issues with an entry-point function or one of its dependencies, it displays a warning message in the Entry Points tab. In this example, the app does not detect code generation readiness issues in the - test_code_stylefunction.
Define Input Types
Because C uses static typing, at compile time,
      the code generator must determine the properties
      of all variables in the MATLAB files. Therefore, you must specify the properties of
      all function inputs. To define the properties of the input
        x, in the Entry Points tab:
- Expand the - test_code_stylenode.
- Click the field to the right of - x. From the list of options, select- int16. Leave the size specification to its default value of 1-by-1.
Generate and Run MEX Function
A MEX function is generated code that can be called from inside MATLAB. Before you generate standalone C/C++ code, it is a best practice to generate and run a MEX function. This step enables you can detect and fix run-time errors that are harder to diagnose in the generated standalone C/C++ code. By default, the MEX function includes memory integrity checks. These checks perform array bounds and dimension checking. The checks detect violations of memory integrity in code generated for MATLAB functions. For more information, see Control Run-Time Checks.
- In the Prepare section of the MATLAB Coder tab of the toolstrip, set Output to C and Build type to MEX. Use the default values for the other code configuration settings. 
- In the Generate section of the toolstrip, open the Generate Code drop-down menu and select the - Generate Code and Buildoption.
The Output section of the code generation panel indicates that code generation succeeded.
The generated MEX function test_code_style_mex is located in your
      current working folder. In the Command Window, run the MEX function with example inputs. For
      example:
test_code_style_mex(int16(4));
Configure Code Generation Parameters
In the Prepare section of the MATLAB Coder tab of the toolstrip:
- Set the Build type to - Static Library (.lib).
- Click Settings and set these parameters: - On the Code Appearance tab, select the Convert if-elseif-else patterns to switch-case statements check box. 
- On the Debugging tab, make sure that Always create a report is selected. 
- On the Advanced tab, make sure that Enable code traceability is selected. 
 
Note
The Convert if-elseif-else patterns to switch-case statements optimization works only for integer and enumerated type inputs.
Generate Standalone C Code
In the Generate section of the toolstrip, open the
        Generate Code drop-down menu and select the Generate
        Code and Build option.
When code generation is complete, the code generator produces a C static library,
        test_code_style.lib, and C code in the
        /codegen/lib/test_code_style subfolder. The Output
      section of the MATLAB Coder panel provides a link to the report.
View the Generated Code
- To open the code generation report, click the Code generation report link. - The - test_code_stylefunction is displayed in the code pane.
- To view the MATLAB code and the C code next to each other, click Trace Code. 
- In the MATLAB code, place your cursor over the statement - if (x == 1).- The report traces - if (x == 1)to a- switchstatement.
