boostorg / boostorg/preprocessor

Result of `BOOST_PP_ARRAY_ELEM` can't be included in vs2017 using `/experimental:preprocessor` option

Offen
#25 7 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen
Vorherrschende Sprache
C++
Sterne
118
Forks
76
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Beschreibung

The following code does not compile under VS2017 using `/experimental:preprocessor` option:

```cpp
#include
#include

#define FOO (1,())
#define BAR BOOST_PP_ARRAY_ELEM(0, FOO)

#define HOGE_1(x) x
#define HOGE_2(x) HOGE_1(x)
#define HOGE() HOGE_2(BAR)
#define PUYO_1(x) #x
#define PUYO_2(x) PUYO_1(x)
#define PUYO() PUYO_2(BAR)

#include BAR //C2006
#include HOGE() //C2006

int main(){
std::cout << PUYO() << std::endl;
return 0;
}
```
Both `#include BAR` and `#include HOGE()` directives result in C2006 error, yet, `PUYO` macro could successfully get the string literal formed by `BAR`.
Switching to vs2019 eliminates this issue.

This issue breaks the usage of `` in `

Beitragsleitfaden

Für dieses Repository ist kein Beitragsleitfaden indexiert

Rechercherichtung

Das gezeigte Makrobeispiel mit VS2017 und `/experimental:preprocessor` reproduzieren, anschließend ` ` und dessen Verwendung aus `` untersuchen. Als abgeschlossen gilt die Aufgabe, wenn die betroffenen Include-Direktiven unter VS2017 kompiliert werden und dabei das bestehende Verhalten unter VS2019 erhalten bleibt.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Bewertung

Tech-Stack
cpp
Bereich
compilers
Issue-Typ
Bug
Schwierigkeit
4/5
Geschätzter Aufwand
3-5 Tage
Aktivitätsstatus
Veraltet
Klarheit
Größtenteils klar
Anfängerfreundlichkeit
45/100

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.