boostorg / boostorg/preprocessor
Result of `BOOST_PP_ARRAY_ELEM` can't be included in vs2017 using `/experimental:preprocessor` option
- Ngôn ngữ chính
- C++
- Star
- 118
- Fork
- 76
- Chỉ số merge pull request
- Không có pull request nào được merge trong 30 ngày
Mô tả
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 `
Hướng dẫn đóng góp
Chưa lập chỉ mục được hướng dẫn đóng góp cho kho mã nguồn này
Hướng nghiên cứu
Tái hiện ví dụ macro được nêu bằng VS2017 và `/experimental:preprocessor`, sau đó kiểm tra `` và việc sử dụng nó từ ``. Được xem là hoàn tất khi các chỉ thị include bị ảnh hưởng biên dịch được trên VS2017 mà vẫn giữ nguyên hành vi hiện có trên VS2019.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Đánh giá
- Công nghệ
- cpp
- Lĩnh vực
- compilers
- Loại issue
- Lỗi
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức độ hoạt động
- Đình trệ
- Độ rõ ràng
- Khá rõ ràng
- Mức phù hợp với người mới
- 45/100