vscode-cpptools icon indicating copy to clipboard operation
vscode-cpptools copied to clipboard

Sizeof struct incorrect for packed structs when preprocessor macro is used

Open heinlpeSICKAG opened this issue 1 year ago • 0 comments

Environment

  • OS and Version: Windows 10 Enterprise 22H2
  • VS Code Version: 1.86.1
  • C/C++ Extension Version: 1.18.5

Bug Summary and Steps to Reproduce

Bug Summary: When in a structure the packed attribute is set via macro and not directly, the siez of the struct will be evaluated invalid

Steps to reproduce:

#define __PACKED_POST __attribute__ ((__packed__))
struct test {
    uint8_t a;
    uint16_t b;
} __PACKED_POST;

static_assert(sizeof(struct test) == 3, "...");

int main() {
    printf("%lu\n", sizeof(struct test));
}

Expected behavior: sizeof(struct test) should be evaluated as 3

Configuration and Logs

{
            "name": "ReleaseB",
            "includePath": [
                "${workspaceFolder}/src/app",
                "${workspaceFolder}/src/AppCommon",
                "${workspaceFolder}/src/netx/sbpadapt",
                "${workspaceFolder}/lib/netX/Rcx21/Includes/tlr",
                "${workspaceFolder}/lib/netX/Rcx21/Includes/CPUs/netx100",
                "${workspaceFolder}/lib/netX/Rcx21/Includes/Configuration",
                "${workspaceFolder}/lib/netX/Rcx21/Includes/API",
                "${workspaceFolder}/src/ctkEip/eip/dpmtk/Source",
                "${workspaceFolder}/src/ctkEip/eip",
                "${workspaceFolder}/src/ctkEip/cips",
                "${workspaceFolder}/src/ctkEip/inc",
                "${workspaceFolder}/src/ctkEip/common",
                "${workspaceFolder}/src/ctkEip/ctk",
                "${workspaceFolder}/src/netX/ctkadapt",
                "${workspaceFolder}/src/sbusp/test",
                "${workspaceFolder}/src/sbusp/sbusp",
                "${workspaceFolder}/src/netx/ptf",
                "${workspaceFolder}/src/netx/sptf",
                "${workspaceFolder}/src/netx/flash",
                "${workspaceFolder}/src/netX",
                "${workspaceFolder}/src/sopas/components/ctkEip/cSRT",
                "${workspaceFolder}/src/sopas/fw/SRT",
                "${workspaceFolder}/src/sopas/fw",
                "${workspaceFolder}/src/Sptf",
                "${workspaceFolder}/src/tstagent",
                "${workspaceFolder}/lib/netX/EIP_ECI/includes/EIP",
                "${workspaceFolder}/lib/netX/EIP_EXT_ECI/Includes",
                "${workspaceFolder}/lib/netX/EIP_ECI/includes/TCPIP",
                "${workspaceFolder}/lib/netX/EIP_ECI/includes/2PSHALEDD",
                "${workspaceFolder}/lib/netX/EIP_ECI/includes/2PS_XC",
                "${workspaceFolder}/lib/netX/EIP_ECI/includes/HilscherDefinitions"
            ],
            "defines": [
                "__RCX__",
                "__NETX100",
                "CHANNEL_B",
                "__USE_LLDP_SNMP",
                "__CDT_PARSER__"
            ],
            "compilerPath": "C:/2D_Tools/CodeSourcery/Sourcery G++ Lite/bin/arm-none-eabi-gcc.exe",
            "cStandard": "c99",
            "cppStandard": "c++11",
            "intelliSenseMode": "gcc-arm"
        }

Other Extensions

No response

Additional context

No response

heinlpeSICKAG avatar Feb 09 '24 15:02 heinlpeSICKAG