Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Может ли третий проверка возвращаемого функцией значения влиять на результат линковки? - C++

Войти
Регистрация
Восстановить пароль
Другие темы раздела
C++ Доступ к методам, массив указателей http://www.cyberforum.ru/cpp-beginners/thread806181.html
Можно ли как нибудь получить доступ к методу Positive в данном случае: StrL ** testStr3; testStr3= new StrL * ; testStr = new StrLBit("000110101"); bool tmp = testStr->Positive(); если StrL...
C++ Краткое и индексное хранение списков на входе задано последовательность целых положительных чисел, не более 99, заканчивающуюся нулем. Организовать последовательно-связанное индексное хранение последовательности так, чтобы числа, имеют... http://www.cyberforum.ru/cpp-beginners/thread806168.html
C++ выделение памяти
доброго времени суток)возник вопрос по поводу выделения памяти) если стоит тип int, то все работает норм, а если float то ошибку выдает)в чем косяк подскажите пожалуйста) #include<iostream> ...
C++ Алгоритм RC5
Приветствую! Очередная лаба по криптографии вызвала определенные сложности. По заданию нужно реализовать приложение, которое: "1)С помощью EKE на основе RSA проверяет подлинность двух пользователей...
C++ Копирование массива (строки) в методе класса http://www.cyberforum.ru/cpp-beginners/thread806148.html
У меня есть класс, поле которого массив символов char* В конструкторе копий требуется копировать это поле для нового объекта. Я это делаю так: char* Student::ArrayCopy(char* arr) { if (arr...
C++ Поиск слова в файле Звучит просто, а на деле... Такая простая операция и... Есть варианты? #include <iostream> #include <string> #include <stdio.h> using namespace std; int main () { setlocale (LC_ALL,... подробнее

Показать сообщение отдельно
kravam
быдлокодер
1696 / 883 / 45
Регистрация: 04.06.2008
Сообщений: 5,472
12.03.2013, 13:01  [ТС]
Цитата Сообщение от XRuZzz Посмотреть сообщение
зачем вам проверять
Цитата Сообщение от XRuZzz Посмотреть сообщение
как это поможет пользователю?
Позвольте мне этого не объяснять. Я в первом сообщении сказал, что код утрированный. Если я выложу неутрированный, Вы, извините за выражение, закалебётесь пыль глотать его разбирать. В неутрированном (кстати), присутствует такая строка:

C++
1
2
  if(::memcmp(&riid,&IID_IUnknown,sizeof(GUID)) == 0) 
    //Тут некоторо едействие
Так что проверку условия я ввёл не от балды.

++++++++++++++++++++++++++++++++++++++++++++++

тут скорее всего при оптимизации компилятор выкидывает сравнение memcmp(&x,&IID_IUnknown,2);
Там идентификатора IID_IUnknown в *.o файле просто-напросто нет. Я потом уже это обнаружил, но не стал сюда писать, сконцетрировался на другом коде. (Поэтому линковщик не встречает в *.o файле идентификатор IID_IUnknown и, поэтому не ругается.) Почему нет- это второй вопрос. Если это оптимизация, то ну его на фиг такую оптимизацию, не знаю в общем.

Щас возвернёмся к коду:
C++
1
2
3
4
5
6
7
8
9
10
//dllka.cpp
#include <unknwn.h>
int main (){
  
  //Размер взят от балды
  char x [23];
 
  //так ругается
  if(memcmp(x,&IID_IUnknown,2)); 
}
НУ даже пусть мой unknwn.h отличается от вашего (у меня есть оба *.h, но понятно, я работаю с "родным", который и показал), но идентификатор-то IID_IUnknown присутствует как в *.o файле, так и в *.a!


поздравляю вам удалось заставить меня скомпилить ваш пример.
это удаётся только если задать линкеру опцию -luuid
Да я уж и с опцией и всяко компилил, я же писал. Дайте командную строку, а?
0
 
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru