Skip to content

Generated prototype incorrectly prefixed with extern "C" when comment contains // #1591

@Rob58329

Description

@Rob58329

Describe the problem

A stray curly-brace in // comments or #if (false) sections causes the function prototypes generated during the "sketch pre-processing" stage of the compilation operation to be incorrectly prefixed with extern "C"

For example:

extern "C" void setup();

To reproduce

Compile the following sketch:

#if (false) // The below lines should not be enabled, and so should not have any effect 
#error "Should not get to here"
// {               // either delete this line,
// extern "C" {}   // or delete this line, and the below code is compiled fine!
#endif

void setup() {
  Serial.begin(74880);
}

void loop() {
  delay(5000);
  Serial.println("Hello");
}

Examine the .cpp file generated by the compilation.

🐛 Generated function prototypes are prefixed with extern "C"


Compile the following sketch:

#if (false) // The below lines should not be enabled, and so should not have any effect 
#error "Should not get to here"
// {               // either delete this line,
// extern "C" {}   // or delete this line, and the below code works fine!
#endif

ADC_MODE(ADC_VCC);

void setup() {
  Serial.begin(74880);
}

void loop() {
  delay(5000);
  Serial.print("raw_battery (should be between 3000 and 3300)="); Serial.println(ESP.getVcc());
  // unless you DELETE one of the above two COMMENT lines, you will get "=65535" and not "=3017"
}

Examine the .cpp file generated by the compilation.

🐛 Generated function prototypes are prefixed with extern "C"

Expected behavior

Generated function prototypes should be correct regardless of the contents of comments:

void setup();

Arduino CLI version

Original report

Arduino IDE v1.8.16

Last verified with

d563755

Operating system

Windows

Operating system version

11

Additional context

I note that there are several discussions regarding curly-braces for Arduino IDE but none of these seem to cover this specific issue:

Additional reports

Related

Issue checklist

  • I searched for previous reports in the issue tracker
  • I verified the problem still occurs when using the nightly build
  • My report contains all necessary details

Metadata

Metadata

Assignees

Labels

topic: build-processRelated to the sketch build processtopic: codeRelated to content of the project itselftype: imperfectionPerceived defect in any part of project

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions

    pFad - Phonifier reborn

    Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

    Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


    Alternative Proxies:

    Alternative Proxy

    pFad Proxy

    pFad v3 Proxy

    pFad v4 Proxy