programing

C 확장:C 확장:연산자들연산자들

stoneblock 2023. 8. 7. 22:18

C 확장:연산자들

나는 어느 순간에 그것이 있다는 것을 관찰했습니다.<?그리고.>?GCC의 연산자입니다.GCC 4.5에서 어떻게 사용할 수 있습니까?제거되었습니까? 그렇다면 언제 제거되었습니까?

Offset block_count = (cpfs->geo.block_size - block_offset) <? count;
cpfs.c:473: error: expected expression before ‘?’ token

최근 매뉴얼에는 다음과 같은 내용이 나와 있습니다.

G++ 최소 및 최대 연산자(')<?및 '>?') 및 그 복합 형태(')<?=') 및 '>?=')는 더 이상 사용되지 않으며 이제 G++에서 제거됩니다.이 연산자를 사용하는 코드를 사용하도록 수정해야 합니다.std::min그리고.std::max대신.

과거 문서를 빠르게 검색하면 버전 4.0(3.4.6에는 문서가 포함되지만 4.0.4에는 포함되지 않음) 즈음에 제거된 것으로 보입니다.

의 이전 반복g++(C 컴파일러가 아님) 최소 또는 최대 값을 제공하기 위해 이러한 연산자를 사용했지만, 이들은 오랫동안 사용되지 않았습니다.std::min그리고.std::max.

기본적으로, 그들은 (그러나 이중 평가의 가능성은 없습니다.a또는b):

a <? b       -->       (a < b) ? a : b
a >? b       -->       (a > b) ? a : b

교체와 관련하여 다음과 같은 방법을 사용할 수 있습니다.

Offset block_count = cpfs->geo.block_size - block_offset;
if (block_count > count) block_count = count;

또는 다음을 사용하는 동등물std::min.

저는 C/C++ "확장"(특히 더 이상 사용되지 않거나 제거된 확장)을 사용하는 것을 좋아하지 않습니다. 이는 언어의 특정 구현과 관련이 있기 때문입니다.

완벽하게 적합한 표준 방법을 사용할 수 있는 경우에는 절대로 비표준 확장을 사용해서는 안 됩니다.

언급URL : https://stackoverflow.com/questions/3437410/c-extension-and-operators