Skip to content

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

Open
@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