假設存在使用枚舉類C++的11 API:鏈路兼容性和枚舉類
// api.hpp
enum class E {A, B, C};
void f(E);
...
// api.cpp
void f(E e)
{
if (e == E::A)
...
}
現在假設我想使用這個API,但我沒有一個C + +11編譯器。所以我:
- 修改
api.hpp
並將enum類更改爲常規枚舉。 - 編寫一些包含修改後的
api.hpp
的代碼並正常使用該API(例如,調用f
)。 - 將此代碼與我的非C++ 11編譯器編譯並將其鏈接到使用C++ 11編譯器編譯的API實現(使用未修改的
api.hpp
)。
這似乎與海灣合作委員會,但它是安全的一般,還是我玩火(ODR違規等)?
假設兩個編譯器是鏈接兼容的,它只是enum和enum類的問題。