Как узнать, какой стандарт C ++ используется в двоичном файле? - PullRequest
0 голосов
/ 25 августа 2018

Например, у меня есть cpp-файл "helloworld" с именем main.cpp.
Если я скомпилирую его с флагом -std = c ++ 11.И я снова скомпилирую его с флагом -std = c ++ 03.
Как я могу указать, какой компилируется с флагом c ++ 11 между этими двумя?
extra: Моя конкретная проблема заключается вчто у меня есть сторонний lib-файл, я использовал его в своем коде, но я не знаю, какой флаг "-std" мне следует использовать.

1 Ответ

0 голосов
/ 14 ноября 2018
  1. Если это сторонняя библиотека, то должна быть некоторая документация с указанием шагов компиляции для сборки из исходного кода. Пожалуйста, обратитесь это.
  2. Если такой вещи нет, я предполагаю, что у вас есть по крайней мере доступ к исходному коду, пожалуйста, посмотрите на реализацию (файлы заголовков или исходные файлы), вы, вероятно, получите более чем достаточно информации, чтобы понять если он использует код, соответствующий стандарту C ++ 11.

@ πάνταῥεῖ, я имею в виду, что компиляция с другим стандартом c ++ не оставит что-то в двоичном файле? - Riopho

Если вы хотите выяснить это из двоичного файла, то я, вероятно, использовал бы objdump и разбирал двоичный файл с включенной разборкой - objdump -dC <binary_name> - (при условии, что вы работаете в Linux, хотя и не знаете много окон). Вы должны быть в состоянии получить некоторую подсказку от этого.

Я не уверен, что компилятор оставляет какие-либо следы в двоичном файле.

...